【问题标题】:InputMismatchException Java first scanner works second does notInputMismatchException Java 第一个扫描器工作第二个不
【发布时间】:2021-12-18 05:52:06
【问题描述】:

此代码适用于第一个扫描器接受整数,但第二个扫描器引发不匹配错误。我似乎无法找到它为什么这样做。谁能帮我吗? 我已经尝试了一切,但它不起作用。我可以让第一个扫描仪多次接受字符串。第二个扫描仪将接受整数,但如果我尝试输入一个字符串甚至一次,那么程序就会崩溃。如何解决?

有关完整程序的更多详细信息,请单击此处:

pastebin.com/iMgNncMH

密码:ENdu4mWLNm

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        
        while(true) {
        System.out.println("Enter two integers:");
        while (!scanner.hasNextInt()) {
            scanner.next();
            
        }

        
        int n1 = scanner.nextInt();
        int n2 = scanner.nextInt();
        
        System.out.println();
        

【问题讨论】:

    标签: java oop switch-statement do-while inputmismatchexception


    【解决方案1】:

    我查看了代码,它在 BlueJ Here is the console image. 上运行良好,您能否解释一下您在编译时遇到的错误?还有完整的代码

    import java.util.*; 
    
    public class prime {
    
        public static void main(String[] args) { 
            Scanner scanner = new Scanner(System.in);
            
            while(true) {
                System.out.println("Enter two integers:");
                while (!scanner.hasNextInt()) {
                    scanner.next();
                }
                int n1 = scanner.nextInt();
                int n2 = scanner.nextInt();
                
                System.out.println();
            }
        }
     }
    

    【讨论】:

    【解决方案2】:

    抛出的错误是 InputMismatchException。它发生在 n2 为什么会发生这种情况...... idk 我和你一样惊讶。奇怪的是它如何不抛出 n1 相同的问题。也许它与您正在寻找的下一个 int 有关。这是我的建议。使用布尔 while 循环的基本错误处理。如果 catch 被抛出,它永远不会达到 true,因此必须输入两个整数。

    public static void main(String[] args) { 
        Scanner scanner = new Scanner(System.in);
        
            int n1 = 0;
            int n2 = 0;
            System.out.println("Enter two integers:");
            boolean validEntry = false;
            while(!validEntry) {
                try {
                    n1 = scanner.nextInt();
                    n2 = scanner.nextInt();
                    validEntry = true;
                }
                catch(InputMismatchException ex){
                    System.out.println("Please refrain from entering words. only numbers aloud");
                    scanner.nextLine();
                }
            }
    }
    

    Ps 你的其他 while 循环永远不会被命中。不过我可以看出你的目的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多