-계산기 예제(switch문)
Scanner scan = new Scanner(System.in);
//변수 선언
int num1 = 0, num2 = 0, result = 0;
String op = null;//연산자(+, -, *, /, %)
//타이틀 출력
System.out.println("*** 계산기 ***");
System.out.print("수 1 : ");
num1 = scan.nextInt();
System.out.print("수 2 : ");
num2 = scan.nextInt();
System.out.print("연산 : ");
//문자열 입력 처리
op = scan.next();//scan.nextLine();
switch(op) {//특정 case까지 점프할 수 있도록 해줌
case "+":
result = num1 + num2;
break;//각 case별로 분리
case "-":
result = num1 - num2;
break;
case "*":
result = num1 * num2;
break;
case "/":
result = num1 / num2;
break;
case "%":
result = num1 % num2;
break;
default:
System.out.println("잘못된 연산자 입력!");
result = 0; //생략해도 됨
break;
}//switch 끝
System.out.println("계산 결과 : " + result);
입력한 연산 문자로 분리. 숫자일 경우에 그냥 사용하는데 문자일 경우에는 ""을 사용해준다.
계산기의 경우에는 break을 꼭 해주어야한다.
원하는 연산결과만 실행해야하는데 break을 하지않으면 모든 연산을 실행하기 때문이다.
-메모리 구조
scan 받은 값은 미리 입력한 데이터와 주소가 다르다. 표면적으로는 같을 수 있지만 컴퓨터는 주소값을 읽기때문에 다른 값이다.
switch문을 if문으로 변환할 때의 주의사항은 문자열의 비교(String)이다.
비교연산자(==)를 사용하면 안된다.
비교연산자는 주소값을 비교해주므로 scan된 데이터를 비교하기에는 부적합하다.
따라서 scan 데이터와 기존에 입력된 데이터를 비교하기 위해서는 .equals을 사용해야한다.
-입력된 'abc'와 scan받은 'abc'를 비교하는 예제
Scanner scan = new Scanner(System.in);
String str1 = "abc";
String str2 = "abc";
if(str1 == str2) {
System.out.println("같다.");
}
else {
System.out.println("같지않다.");
}
str2 = scan.next();//abc 입력
if(str1 == str2) {
System.out.println("같다.");
}
else {
System.out.println("같지않다.");
}
str1과 str2에 입력한 abc는 주소값이 같기 때문에 비교연산자를 사용해서 비교했을 때 "같다."의 결과가 나온다.
하지만 str2에 scan으로 abc를 입력했을 때는 다른 주소값이 입력되기 때문에 "같지않다."의 결과가 나온다.
-.equals 사용방법 3가지
문자열변수.equals("비교문자열");
문자열변수1.equals("비교문자열변수2");
"비교문자열".equals(문자열변수);
-계산기 예제(switch문 -> if문)
if(op.equals("+")) {
result = num1 + num2;
}
else if(op.equals("-")) {
result = num1 - num2;
}
else if(op.equals("*")) {
result = num1 * num2;
}
else if(op.equals("/")) {
result = num1 / num2;
}
else if(op.equals("%")) {
result = num1 % num2;
}
else {
System.out.println("잘못된 연산자 입력!");
result = 0;
}
비교연산자 대신 .equals를 사용해서 비교해준다.
+, -, *, /, % 이외의 나머지 연산자 입력 시 "잘못된 연산자 입력!"이 나오기때문에 결과값을 else로 묶어준다.
'JAVA' 카테고리의 다른 글
0306 JAVA - 캘린더만들기(for문, if문 사용) (0) | 2020.03.08 |
---|---|
0305 JAVA - 반복문(for문, for문 if문 조합 ) (1) | 2020.03.05 |
0305 JAVA - 자습 과제 (0) | 2020.03.05 |
0304 JAVA - 조건문 if, switch (1) | 2020.03.04 |
0303 JAVA - 산술연산자, 간단한 계산기, 증감연산자, 비교연산자, 논리연산자 (1) | 2020.03.04 |