2014-06-22 1 views
-1
class Randomagain { 
    public static void main(String args[]){ 
     Scanner tuna = new Scanner(System.in); 
     boom boomObj = new boom(); 
     System.out.println("~~Calculator~~"); 
     System.out.print("Enter your 1st number: "); int first_num = tuna.nextInt(); 
     System.out.print("Enter your 2nd number: "); int second_num = tuna.nextInt(); 

     System.out.print("What do you want to do? [plus,sub,mult,div]: "); 
     String choice = tuna.nextLine(); 
     if (choice == "plus") boomObj.addition(first_num, second_num); 
     if (choice == "sub") boomObj.subtraction(first_num, second_num); 
     if (choice == "mult") boomObj.multiply(first_num, second_num); 
     if (choice == "div") boomObj.division(first_num, second_num); 
     else {System.out.println("Please check the fields again!! ");} 
    } 
} 

붐 클래스 :가능한 클래스 오류입니까?

What do you want to do? [plus,sub,mult,div]: Please check the fields again!! 

그리고 나는 그것의 응답으로 아무 것도 입력 할 수 없습니다 : 나는 그것을 실행하면

public class boom { 
    private int sub_final, add_final, multi_final, div_final; 
    public void addition(int a, int b){ 
     add_final = a + b; System.out.println(a+ " + " +b+ " = " +add_final); 
    } 

    public void subtraction(int a, int b){ 
     sub_final = a - b; System.out.println(a+ " - " +b+ " = " +sub_final); 
    } 

    public void multiply(int a, int b){ 
     multi_final = a * b; System.out.println(a+ " * " +b+ " = " +multi_final); 
    } 

    public void division(int a, int b){ 
     div_final = a + b; System.out.println(a+ "/" +b+ " = " +add_final); 
    } 
} 

, 3 명령, 그것은 같은 것입니다.

+0

그 오류 메시지가 인쇄되면 프로그램이 종료되기 때문입니다. 또한 'String' 동등성을'=='로 검사 할 수 없기 때문에'equals()'를 사용해야합니다. – azurefrog

+0

"왜 하시겠습니까?"라는 메시지가 사용자가 보낸 회신을 기다리지 않은 이유는 무엇입니까? – scorpio98

답변

1

choiceequals 메서드를 사용하여 리터럴 문자열과 비교해야하며 ==을 사용하지 않아야합니다. 그 이유는 ==이 비교 된 변수가 동일한 문자열 객체를 참조하는지 여부를 확인하기 때문입니다. 그래서

은 대체 :

    if (choice == "plus") boomObj.addition(first_num, second_num); 
        if (choice == "sub") boomObj.subtraction(first_num, second_num); 
        if (choice == "mult") boomObj.multiply(first_num, second_num); 
        if (choice == "div") boomObj.division(first_num, second_num); 
       else {System.out.println("Please check the fields again!! "); 

    if (choice.equals("plus")) boomObj.addition(first_num, second_num); 
        if (choice.equals("sub")) boomObj.subtraction(first_num, second_num); 
        if (choice.equals("mult")) boomObj.multiply(first_num, second_num); 
        if (choice.equals("div")) boomObj.division(first_num, second_num); 
       else {System.out.println("Please check the fields again!! "); 
+0

감사합니다 !! 그것은 일했다!! – scorpio98

1

tuna.nextLine()으로 InputStream의 모든 컨텐츠를 읽가 사이의 빈 텍스트 인 줄 바꿈 (개행)을 찾을 때까지 두 번째 숫자와 키를 입력하십시오.

tuna.next()으로 변경하면됩니다.

//if (choice == "plus") 
if (choice.equals("plus")) { 
    //... 
} 

코드의 또 다른 문제는 마지막 else 문장은 가장 가까운 if 문에 영향을 미치는 것입니다 :

그 외에, 당신은 ==를 사용하지 않는, equals 방법을 사용하여 String의를 비교해야한다. 코드는 현재 :

if (choice.equals("plus") { } 
if (choice.equals("sub") { } 
if (choice.equals("mul") { } 
if (choice.equals("div") { } else { } //only affects here 

즉,이 프로그램은 항상 else 문에서 코드를 실행합니다 "div" 것을 다른 텍스트를 입력합니다. 코드가 다음과 같이 변경되어야합니다 :

if (choice.equals("plus") { } 
else if (choice.equals("sub") { } 
else if (choice.equals("mul") { } 
else if (choice.equals("div") { } else { } 
+0

고마워요 !! 나는 Java에 익숙하지 않아서 문자열 함수에 대한 적절한 구문에 대해 확신하지 못했습니다. :) – scorpio98