본문 바로가기

JAVA

JAVA(6) - switch문 계산기 만들기/if문으로 계산기 만들기/switch -> if 변환

1. switch문으로 오칙연산 계산기 만들기

//변수 선언
int num1 = 0, num2 =0, result = 0;
String op = "";
		
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 "+":
	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);

2. if문으로 계산기 처리해보기

나쁜예) 연산기호를 올바르게 비교할 수 없어서 else문만 실행되고 계산결과는 0만 출력됨

Scanner scan = new Scanner(System.in);
//변수 선언
int num1 = 0, num2 =0, result = 0;
String op = "";
		
System.out.println("*** 계산기 ***");	//타이틀 출력
System.out.print("수1 : ");
num1 = scan.nextInt();
System.out.print("수2 : ");
num2 = scan.nextInt();

System.out.print("연산 : ");
op = scan.next();
        
if(op == "+") {
	result = num1 + num2;
}
else if(op == "-") {
	result = num1 + num2;
}
else if(op == "*") {
	result = num1 + num2;
}
else if(op == "/") {
	result = num1 + num2;
}
else if(op == "%"){
	result = num1 + num2;
}
else{
	System.out.println("잘못된 연산자 입력!");
	result = 0;	//생략해도 됨
}
System.out.println("계산 결과 : " + result);

3. switch -> if 변환 

  • 주의사항: 문자열의 비교
  • 문자열은 비교연산자를 사용할 수 없음
  • 1형: 문자열변수.equals("비교문자열");
  • 2형: 문자열변수1.equal(비교문자열변수2);
  • 3형: "비교문자열".equals(문자열변수);  -> 꼭 변수를 문자열과 비교 안하고 문자열을 변수와 비교해도 됨

TIP! : //중괄호 끝에 주석으로 중괄호 이름 표시해두면 편함

 

예시1)

  • ==은 정적데이터를 비교하는 연산자이므로 scan받은 값을 비교하면 같지않다로 결과값이 나옴
  • abc라는 똑같은 값을 입력받아서 다시 입력했을 때 결과값이 "같지않다"로 나옴
import java.util.Scanner;

public class StringCalculator {

	public static void main(String[] args) {
		
		Scanner scan = new Scanner(System.in);
		
		String str1 = "abc";
		String str2 = "abc"; //String str2 = new String("abc"); 원래는 이런 형식으로 데이터를 만들어주는게 맞지만 String은 많이 쓰이기때문에 new 명령어를 생략할 수 있음
		
		
		
		if(str1 == str2) {
			System.out.println("같다.");			
		}
		else {
			System.out.println("같지않다.");			
		}
		
		str2 = scan.next();
		if(str1 == str2) {
			System.out.println("같다.");			
		}
		else {
			System.out.println("같지않다.");			
		}
				
	}

}

 

 

예시2) 

  • .equals()는 동적데이터를 비교해주어서 scan 받은 값과 비교했을 경우 "같다"로 나옴
  • equals로 비교하고 abc를 입력해서 비교하면 "같다"로 나옴
import java.util.Scanner;

public class StringCalculator {

	public static void main(String[] args) {
		
		Scanner scan = new Scanner(System.in);
		
		String str1 = "abc";
		String str2 = "abc"; //String str2 = new String("abc"); 원래는 이런 형식으로 데이터를 만들어주는게 맞지만 String은 많이 쓰이기때문에 new 명령어를 생략할 수 있음
		
		
		
		if(str1 == str2) {
			System.out.println("같다.");			
		}
		else {
			System.out.println("같지않다.");			
		}

		str2 = scan.next();
		if(str1.equals(str2)) {
			System.out.println("같다.");			
		}
		else {
			System.out.println("같지않다.");			
		}
		
		
	}

}