티스토리 뷰
반응형
package prj190628;
import java.util.*;
public class test_1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.print("첫번째 숫자 입력하세요>>>>>>>>");
Scanner scan = new Scanner(System.in); //입력받을 scan 생성
String tmp = scan.nextLine(); // tmp 생성
int first_num = Integer.parseInt(tmp); //처음 숫자 저장
int second_num = 0; //두번째 숫자 변수 초기에 생성
char op =' '; //연산자 변수 초기 생성
//////////////////////////////////////////do while
do {
switch(op) {
case '+' :
System.out.printf("%d %c %d = %d", first_num, op, second_num, first_num+second_num);
break;
case '-' :
System.out.printf("%d %c %d = %d", first_num, op, second_num, first_num-second_num);
break;
case '*' :
System.out.printf("%d %c %d = %d", first_num, op, second_num, first_num*second_num);
break;
case '/' :
System.out.printf("%d %c %d = %d", first_num, op, second_num, first_num/second_num);
break;
case '%' :
System.out.printf("%d %c %d = %d", first_num, op, second_num, first_num%second_num);
break;
}//case end
break;
}while(first_num!=0); //do while end
///////////////////////////////////////while
while(first_num!=0) {
switch(op) {
case '+' :
System.out.printf("%d %c %d = %d", first_num, op, second_num, first_num+second_num);
break;
case '-' :
System.out.printf("%d %c %d = %d", first_num, op, second_num, first_num-second_num);
break;
case '*' :
System.out.printf("%d %c %d = %d", first_num, op, second_num, first_num*second_num);
break;
case '/' :
System.out.printf("%d %c %d = %d", first_num, op, second_num, first_num/second_num);
break;
case '%' :
System.out.printf("%d %c %d = %d", first_num, op, second_num, first_num%second_num);
break;
} //switch end
break;
}//while end
///////////////////////////////////////if
if(first_num != 0) {//조건은 0이 입력되면 종료 이므로 0이 아닐때 아래 구문 실시
System.out.print("두번째 숫자 입력하세요>>>>>>>>>");
String tmp_1 = scan.nextLine(); //기존 scan을 활용해서 tmp_1 에 두번째 숫자 저장
second_num = Integer.parseInt(tmp_1); //string 으로 받은 숫자를 int 형 변환
System.out.print("원하는 연산자 입력하세요>>>>>>>>>");
op = scan.next().charAt(0); //연산자는 한글자이기 때문에 char형으로 받는다
//스캔함수명.next().charAt(인덱스넘버);
//첫 글자 char형 op에 넣겠다는것.
switch(op) {//op에 저장된 연산자에 따라 연산 해야 하기 때문에 switch 문으로
case '+' :
System.out.printf("%d %c %d = %d", first_num, op, second_num, first_num+second_num);
break;
case '-' :
System.out.printf("%d %c %d = %d", first_num, op, second_num, first_num-second_num);
break;
case '*' :
System.out.printf("%d %c %d = %d", first_num, op, second_num, first_num*second_num);
break;
case '/' :
System.out.printf("%d %c %d = %d", first_num, op, second_num, first_num/second_num);
break;
case '%' :
System.out.printf("%d %c %d = %d", first_num, op, second_num, first_num%second_num);
break;
} //switch end
}//if end
else if(first_num==0) System.out.println("0 입력으로 인한 종료");
//0이 아닐때 실행되는 조건이기때문에 0입력하면 종료 문구 띄울것.
}//main end
}//class end
=====================남의 코드
Scanner scanner = new Scanner(System.in);
char str='a';
do {
int n1 = Integer.parseInt(scanner.next());
int n2 = Integer.parseInt(scanner.next());
str=scanner.next().charAt(0);
boolean b=false;
int t=0;
float t2=2;
switch (str) {
case '+':
t=n1+n2;
break;
case '-':
t=n1-n2;
break;
case '/':
t=n1/n2;
if (n1<n2) {
t2=(float)n1/n2;
}
break;
case '*':
t=n1*n2;
break;
case '%':
t=n1%n2;
break;
default:
b=true;
break;
}
if (b==true) {
break;
}
if (t2<1) {
System.out.printf("%d%s%d=%f",n1,str,n2,t2);
}else {
System.out.printf("%d%s%d=%d\n",n1,str,n2,t);
}
} while (str!='0');
System.out.println("종료");
수업 중 공유 받은 코드 do while문인데
어딘가 묘하게 이상하다.
do while문의 특성상 무조건 한 번은 실행 되기 때문에,
저 코드는 첫 숫자에 0이 들어가도 무조건 실행된다.
그런데 나는 그러고 싶지 않았다는게 문제.
Scanner scanner = new Scanner(System.in);
char str='a';
do {
boolean b = false;
System.out.print("첫 번째 숫자 입력 : ");
int n1 = Integer.parseInt(scanner.next());
if(n1==0) break;
System.out.print("두 번째 숫자 입력 : ");
int n2 = Integer.parseInt(scanner.next());
System.out.print("연산자 입력 : ");
str=scanner.next().charAt(0);
int t=0;
float t2=2;
switch (str) {
case '+':
t=n1+n2;
b = true;
break;
case '-':
t=n1-n2;
b = true;
break;
case '/':
t=n1/n2;
b = true;
if (n1<n2) t2=(float)n1/n2;
break;
case '*':
t=n1*n2;
b = true;
break;
case '%':
t=n1%n2;
b = true;
break;
}
if (t2<1) System.out.printf("%d%s%d=%f",n1,str,n2,t2);
else System.out.printf("%d%s%d=%d\n",n1,str,n2,t);
if(b==true) break;
} while (str!='0');
System.out.println("종료");
1. 아무것도 나오지 않는 콘솔창에 글씨라도 써줘야 내가 뭘해야하는 지 알겠지
2. if문을 안쓰고 해보려고 했는데 도저히 안되겠어서 if문 씀. do while을 깰 좋은 방법이 있을까?
사실 거대한 if문으로 do while을 제어 하면 되는것이지만..
3. 첫 숫자가 0이 면 바로 do while문을 깨고 나가 종료가 찍히게 만들었다.
4. 나는 case문에 바로 찍히게 두었지만, 이 사람은 실제로 case문에선 연산만, 나머지는 case문 벗어난 곳에서 출력
이 쪽이 더 효율적인 것 같기도. 수식만 쓰면 되는데, case에서 출력까지 하니 코드가 지저분해 보인다.
반응형
'JAVA' 카테고리의 다른 글
190628 배열 연습 (0) | 2019.06.28 |
---|---|
190628 반복문 연습 (0) | 2019.06.28 |
190627 배열 값 셔플 (0) | 2019.06.27 |
190627 배열 sum,avg, max, min 구하기 (0) | 2019.06.27 |
190627 배열 복사 연습 (0) | 2019.06.27 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 이메일 정규식
- IntelliJ #gradle #tomcat #spring #springmvc
- mybatis
- 정규식
- 계좌번호정규식
- js
- jQuery
- spring error #
- select제어
- poi 엑셀
- JSON
- spring 엑셀
- Regex
- 인텔리제이
- 정규식 특수문자
- poi
- PageNotFound - No mapping for GET
- ''찾기
- JSON파싱
- 공백찾기
- 엑셀다운로드
- 정규식 한글만
- SpringXmlModelInspection
- Spring
- selectbox
- JSON날짜
- 정규식 숫자만
- POI EXCEL
- Failed to load resource: the server responded with a status of 404 (Not Found)
- no getter for property named
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함