Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从扫描仪读取字符_Java - Fatal编程技术网

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;

对不起,我的问题是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

答复: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个声誉,哈哈。再次谢谢。