2013-01-31 92 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你读过答案的最后一段吗? –