Java 从扫描仪读取字符
对不起,我的问题是noob。这是我第一天尝试Java编程。我需要帮助检索用户的输入,用户希望使用哪个运算符来处理整数Java 从扫描仪读取字符,java,Java,对不起,我的问题是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;
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
答复:31400000000000002
谢谢大家!帮了很多忙 在比较中使用==而不是=(这意味着分配)。您需要使用
if (operator == '+')
请注意'double equal to'。正如其他人已经指出的那样,使用
=
操作符检查是否相等。=
运算符将改为赋值
要从扫描仪中读取单个字符,请查看以下问题:。在这里,您将发现使用方法的建议,该方法接收一个正则表达式作为参数。提供
通配符作为模式,您将能够获得一个包含下一个字符的字符串,并在其上使用,将其作为字符
Scanner sc = new Scanner("abc");
char ch = sc.findInLine(".").charAt(0);
System.out.println(ch); // prints "a"
当然,您也可以使用Scanner.next()
将下一个单词作为字符串获取,然后只获取其第一个字符。但要考虑到这样做会从输入缓冲区中丢弃单词的其余部分。确定。这很有效,可以帮助您在通往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);
}
}
用
==
代替=
哦,天哪,完全没想到!谢谢,哈哈,你说得对。我忘了,谢谢。太棒了,谢谢你的大力帮助。我会调查的。@Xavi你能解释一下你为什么用findInLine吗?甚至我也可以通过这个代码得到char<代码>扫描仪输入=新扫描仪(System.in);字符a;a=in.next().charAt(0);系统输出打印项次(a)@asif你读过答案的最后一段了吗?@XaviLópez是的,但不理解你的最后一行,但要考虑到这样做会从输入缓冲区中丢弃单词的其余部分。
太棒了!那么您所做的就是将==比较符号更改为“等于”,这表示相同的事情?然后将运算符放在引号中,以便可以将其作为字符串读取?此外,您还将char替换为string。完美:)在java中有一些语法规则。如果要比较2个字符串,建议使用等于,而不是==如果要比较,可以使用==例如2 int。scanner类不直接支持char,因此在此处使用string。如果你喜欢我的答案,就投赞成票,接受它吧,我明白了,我明白了。好的,我不知道投票和接受(今天才开始使用stackoverflow)。我会投票一次,因为我需要15个声誉,哈哈。再次谢谢。