2013-01-31 40 views
0

對不起Noob問題。這是我第一天嘗試Java編程。我需要幫助檢索用戶想要使用整數的操作符的用戶輸入。從掃描儀讀取字符

import java.util.Scanner; 

public class calculator { 

    public static void main (String args[]) { 

     Scanner number = new Scanner(System.in); 
     double num1,num2,answer; 
     char operator; 

     System.out.println("Enter first number: "); 
     num1 = number.nextDouble(); 

     operator = number.nextChar(); /* the "nextChar" is not correct */ 

     System.out.println("Enter second number: "); 
     num2 = number.nextDouble(); 

     if (operator = '+'){ 
      answer = num1 + num2; /* If statements do not work like this */ 
     }        /* I would use "else if", unsure if it allows */ 
     if (operator = '-'){ 
      answer = num1 - num2; 
     } 
     if (operator = '*'){ 
      answer = num1 - num2; 
     } 
     if (operator = '/'){ 
       answer = num1/num2; 
     } 

     System.out.println(num1 + num2 + operator + answer); 

    } 
} 

編輯後的版本:

import java.util.Scanner; 

public class calculator{ 

    public static void main (String args[]) { 

     Scanner userInput = new Scanner(System.in); 

     String operator; 
     double num1,num2,answer = 0; 



     System.out.println("Enter first number: "); 
     num1 = userInput.nextDouble(); 

     System.out.println("Enter operator: "); 
     operator = userInput.next(); 


     System.out.println("Enter second number: "); 
     num2 = userInput.nextDouble(); 

     if (operator.equals ("+")){ 
      answer = num1 + num2; 
     } 
     else if (operator.equals ("-")){ 
      answer = num1 - num2; 
     } 
     else if (operator.equals ("*")){ 
      answer = num1 * num2; 
     } 
     else if (operator.equals ("/")){ 
       answer = num1/num2; 
     } 

     System.out.println("First number:" + num1); 
     System.out.println("Operator:" + operator); 
     System.out.println("Second number:" + num2); 

     System.out.println("Answer: " + answer); 
    } 
} 

第一個數字:10.0

運營商:*

第二個數字:3.14

答:31.400000000000002

非常感謝!幫了很多!

+7

使用'=='而不是'=' –

+0

哦,男人,完全錯過了!謝謝哈哈 – Cakes

回答

0

好的。這工作,並可以幫助你在你的道路上的java

public class Tester4 { 

    public static void main(String args[]) { 

     Scanner input = new Scanner(System.in); 
     double num1, num2, answer = 0; 
     String operator; 

     System.out.println("Enter first number: "); 
     num1 = input.nextDouble(); 

     System.out.println("Enter operator: "); 
     operator = input.next(); 

     System.out.println("Enter second number: "); 
     num2 = input.nextDouble(); 

     if(operator.equals("+")) { 
      answer = num1 + num2; 
     } else if(operator.equals("-")) { 
      answer = num1 - num2; 
     } else if(operator.equals("*")) { 
      answer = num1 - num2; 
     } else if(operator.equals("/")) { 
      answer = num1/num2; 
     } 

     System.out.println("First number:" + num1); 
     System.out.println("Operator:" + operator); 
     System.out.println("Second number:" + num2); 

     System.out.println("Answer: " + answer); 
    } 

} 
+0

太棒了!所以你所做的是將==比較符號改爲「等於」,這意味着同樣的事情?那麼你把運算符放在引號中,以便它可以被讀爲一個字符串?另外,你用字符串替換了char。完美:) – Cakes

+0

在java中有一些語法規則。如果要比較2個字符串,建議使用equals而不是==,如果要比較,可以使用==。 2 int。掃描器類不直接支持字符,因此您在該位置使用字符串。如果你喜歡我的回答只是投票並接受 –

+0

啊,我明白了,我明白了。好吧,我不知道投票和接受(今天剛開始使用stackoverflow)。我會一次投票,因爲我需要15點聲望才能這麼做。再次感謝。 – Cakes

0

在比較中使用==,而不是=(表示分配)。

+0

你說得對。我忘記了,謝謝。 – Cakes

-1

您需要使用

if (operator == '+') 

通知 '雙等於'。

0

正如其他已經指出的那樣,使用==運算符來檢查相等性。 =運算符將分配值。

爲了讀取Scanner中的單個字符,請查看以下問題:Scanner method to get a char。在那裏,您會發現使用Scanner.findInLine()方法的建議,該方法接收正則表達式作爲參數。提供.通配符作爲模式,你將能夠得到一個字符串和下一個字符,並使用charAt(0)就可以得到它作爲char

Scanner sc = new Scanner("abc"); 
char ch = sc.findInLine(".").charAt(0); 
System.out.println(ch); // prints "a" 

當然,你也可以只使用Scanner.next()獲得下一個單詞爲字符串,並且只得到它的第一個字符。但考慮到這樣做會從輸入緩衝區中丟棄其他字詞。

+0

真棒,感謝您的大力幫助。我會研究一下。 – Cakes

+0

@Xavi你能解釋我爲什麼使用findInLine嗎?即使我可以通過此代碼獲得char。 'Scanner in = new Scanner(System.in); char a; a = in.next()。charAt(0); System.out.println(a);' – UnKnown

+0

@asif你讀過答案的最後一段嗎? –