Java.util.scanner 字符扫描

Java.util.scanner 字符扫描,java.util.scanner,Java.util.scanner,我是Java新手。我希望能够在扫描仪中输入操作字符 我的代码应该生成以下内容: 输入两个数字:13 6 什么手术?* 13*6是多少?78 对 我使用Switch语句来存储用户可用的操作。 它们是:+、-、*和/ 每次在输出后写入操作时,我都会收到运行时错误 import java.util.Scanner; public class Användardialog4 { public static void main(String[]args){ Scanner sc

我是Java新手。我希望能够在扫描仪中输入操作字符

我的代码应该生成以下内容:

  • 输入两个数字:13 6
  • 什么手术?*
  • 13*6是多少?78
  • 我使用Switch语句来存储用户可用的操作。 它们是:+、-、*和/

    每次在输出后写入操作时,我都会收到运行时错误

    import java.util.Scanner;
    
    public class Användardialog4 {
        public static void main(String[]args){
            Scanner sc = new Scanner(System.in);
    
        int svar;
        String op;
        char operator;
    
        System.out.println("Enter two numbers: ");
        int tal = sc.nextInt();
        int tal2 = sc.nextInt();
    
        System.out.println("Operation?");
        op = sc.nextLine();
        operator = op.charAt(0);
    
        switch(operator){
        case '+':
            System.out.println("What is "+tal+" + "+tal2);
            svar = sc.nextInt();
            if (svar == tal+tal2)
                System.out.println("Correct!");
            else
                System.out.println("Wrong - The right answer is: "+tal+tal2);
            break;
        case '*':
            System.out.println("What is "+tal+" * "+tal2);
            svar = sc.nextInt();
            if (svar ==tal*tal2)
                System.out.println("Correct!");
            else
                System.out.println("Wrong - The right answer is: "+tal*tal2);
            break;
        case '-':
            System.out.println("What is "+tal+" - "+tal2);
            svar = sc.nextInt();
            if (svar == tal-tal2)
                System.out.println("Correct!");
            else
                System.out.println("Wrong - The right answer is: "+(tal-tal2));
            break;
        case '/':
            System.out.println("What is "+tal+" / "+tal2);
            svar = sc.nextInt();
            if (svar == tal/tal2)
                System.out.println("Correct!");
            else
                System.out.println("Wrong - The right answer is: "+tal/tal2);
            break;
        }
    }
    }
    
    我得到的运行时错误是:

    Exception in thread "main" java.util.InputMismatchException at
    java.util.Scanner.throwFor(Unknown Source) at
    java.util.Scanner.next(Unknown Source) at
    java.util.Scanner.nextInt(Unknown Source) at
    java.util.Scanner.nextInt(Unknown Source) at
    Användardialog4.main(Dialog4.java:16)
    
    所以我的问题是,如何在Scanner类中使用字符?
    难道没有下一步吗;或者Java中类似的东西?

    更改
    op=sc.nextLine()
    op=sc.next()

    publicstringnext()查找并返回来自此扫描仪的下一个完整令牌。由于您的操作只有一个令牌/字符,因此这是一种方法


    公共字符串nextLine()使此扫描仪前进超过当前行并返回跳过的输入。由于流中没有结束行字符,因此此操作失败。

    Change
    op=sc.nextLine()
    op=sc.next()

    int ans;
    switch(operator){
        case '+':
            ans = tal + tal2;
            break;
        case '*':
            ans = tal * tal2;
            break;
        case '-':
            ans = tal - tal2;
            break;
        case '/':
            ans = tal / tal2;
            break;
        }
        System.out.println("What is "+tal+operator+tal2+"?");
        svar = sc.nextInt();
        if (svar == ans)
            System.out.println("Correct!");
        else
            System.out.println("Wrong - The right answer is: "+ans);
    
    publicstringnext()查找并返回来自此扫描仪的下一个完整令牌。由于您的操作只有一个令牌/字符,因此这是一种方法

    公共字符串nextLine()使此扫描仪前进超过当前行并返回跳过的输入。由于流中没有结束行字符,因此此操作失败

    int ans;
    switch(operator){
        case '+':
            ans = tal + tal2;
            break;
        case '*':
            ans = tal * tal2;
            break;
        case '-':
            ans = tal - tal2;
            break;
        case '/':
            ans = tal / tal2;
            break;
        }
        System.out.println("What is "+tal+operator+tal2+"?");
        svar = sc.nextInt();
        if (svar == ans)
            System.out.println("Correct!");
        else
            System.out.println("Wrong - The right answer is: "+ans);
    
    代码质量改进的一个小变化。删除了冗余代码


    代码质量改进的一个小变化。删除了冗余代码。

    这不是编译器错误,而是运行时异常。看起来问题在于您正在请求一个int,而它看到的下一个标记不是int。这不是响应,只是一个旁白:如果您使用的是java 5+,我建议使用“enum”来提供操作功能。这会更整洁。这不是编译器错误,而是运行时异常。看起来问题在于您正在请求一个int,而它看到的下一个标记不是int。这不是响应,只是一个旁白:如果您使用的是java 5+,我建议使用“enum”来提供操作功能。不过有一个问题,在if语句中“ans”真的可以访问吗?考虑到它存在于switch语句中这一事实。我使用类似的方法编写了一个代码,但它不起作用。您应该在switch语句本身之前声明它。。请看代码中的第一行。不客气。。如果这有帮助的话,你应该投赞成票。不过有一个问题,在if语句中“ans”真的可以使用吗?考虑到它存在于switch语句中这一事实。我使用类似的方法编写了一个代码,但它不起作用。您应该在switch语句本身之前声明它。。请看代码中的第一行。不客气。。如果这有帮助,你应该投赞成票。