【问题标题】:Java exception [SWITCH && SCANNER]Java 异常 [SWITCH && SCANNER]
【发布时间】:2020-10-07 18:54:38
【问题描述】:

我试图使用开关和扫描器制作我的第一个 java 程序,但我无法修复返回我的错误。

错误:

Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:862)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextInt(Scanner.java:2117)
at java.util.Scanner.nextInt(Scanner.java:2076)
at Operazioni.main(Operazioni.java:13)

代码:

import java.util.Scanner;

public class Operazioni{
    public static void main(String[] args){

        int risultato;
        int select;
        int num1,num2;
        Scanner oggetti = new Scanner(System.in);
        System.out.println("Che operazione vuoi effettuare?");
        System.out.println("1. Addizione, 2. Sottrazione, 3. Moltiplicazione 4. Divisione");
        select = oggetti.nextInt();
        switch (select) {
        case 1:
        System.out.print("Inserisci il primo numero");
        num1 = oggetti.nextInt();
        System.out.print("Inserisci il secondo numero");
        num2 = oggetti.nextInt();
        risultato = num1 + num2;
        System.out.println("Il risultato dell'addizione è " + risultato);
        case 2:
        System.out.print("Inserisci il primo numero");
        num1 = oggetti.nextInt();
        System.out.print("Inserisci il secondo numero");
        num2 = oggetti.nextInt();
        risultato = num1 - num2;
        System.out.println("Il risultato della sottrazione è " + risultato);
        break;
        case 3:
        System.out.print("Inserisci il primo numero");
        num1 = oggetti.nextInt();
        System.out.print("Inserisci il secondo numero");
        num2 = oggetti.nextInt();
        risultato = num1 * num2;
        System.out.println("Il risultato della moltiplicazione è " +risultato);
        case 4:
        System.out.print("Inserisci il primo numero");
        num1 = oggetti.nextInt();
        System.out.print("Inserisci il secondo numero");
        num2 = oggetti.nextInt();
        risultato = num1 / num2;
        System.out.println("Il risultato della divisione è " + risultato);
        default:
        System.out.println("Errore, scelta non esistente");
        }
    }
}

请原谅我写代码的顺序不好。

【问题讨论】:

  • 收到此错误时输入什么内容?
  • (1) 在某些情况下,您需要break 控制流启动器,否则它将尝试在它之后执行其余情况的代码 (2) 让您的编辑器/IDE 为您缩进代码。
  • 还有哪一行是 13?根据发布的代码,它将是switch (select),但其中不涉及扫描仪。
  • 请注意,由于您为每个操作输入了num1num2,您可以将其从switch 中取出(在此之前执行)并简化您的代码。

标签: java exception switch-statement java.util.scanner


【解决方案1】:

您的 switch-case 语法缺少中断;陈述 试试这个代码:

import java.util.Scanner;

public class Operazioni {
    public static void main(String[] args) {

        int risultato;
        int select;
        int num1, num2;
        Scanner oggetti = new Scanner(System.in);
        System.out.println("Che operazione vuoi effettuare?");
        System.out.println("1. Addizione, 2. Sottrazione, 3. Moltiplicazione 4. Divisione");
        select = oggetti.nextInt();
        switch (select) {
        case 1:
            System.out.print("Inserisci il primo numero");
            num1 = oggetti.nextInt();
            System.out.print("Inserisci il secondo numero");
            num2 = oggetti.nextInt();
            risultato = num1 + num2;
            System.out.println("Il risultato dell'addizione è " + risultato);
            break;

        case 2:
            System.out.print("Inserisci il primo numero");
            num1 = oggetti.nextInt();
            System.out.print("Inserisci il secondo numero");
            num2 = oggetti.nextInt();
            risultato = num1 - num2;
            System.out.println("Il risultato della sottrazione è " + risultato);
            break;

        case 3:
            System.out.print("Inserisci il primo numero");
            num1 = oggetti.nextInt();
            System.out.print("Inserisci il secondo numero");
            num2 = oggetti.nextInt();
            risultato = num1 * num2;
            System.out.println("Il risultato della moltiplicazione è " + risultato);
            break;

        case 4:
            System.out.print("Inserisci il primo numero");
            num1 = oggetti.nextInt();
            System.out.print("Inserisci il secondo numero");
            num2 = oggetti.nextInt();
            risultato = num1 / num2;
            System.out.println("Il risultato della divisione è " + risultato);

        default:
            System.out.println("Errore, scelta non esistente");
        }
    }
}

【讨论】:

  • 嗯? case 语句不需要大括号。
【解决方案2】:

您的代码是正确的,尽管您忘记在 case 1,3 & 4 中添加 break 语句

您已经使用scannerobj.nextInt() 来读取用户输入,scanner 类的nextInt() 方法,从用户读取一个int 值,我猜在您的情况下用户正在输入字符串而不是导致此错误的整数

这是工作代码(附加输出SS):

import java.util.Scanner;

public class HelloWorld {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int risultato;
        int select;
        int num1,num2;
        Scanner oggetti = new Scanner(System.in);
        System.out.println("Che operazione vuoi effettuare?");
        System.out.println("1. Addizione, 2. Sottrazione, 3. Moltiplicazione 4. Divisione");
        select = oggetti.nextInt();
        switch (select) {
        case 1:
            System.out.print("Inserisci il primo numero");
            num1 = oggetti.nextInt();
            System.out.print("Inserisci il secondo numero");
            num2 = oggetti.nextInt();
            risultato = num1 + num2;
            System.out.println("Il risultato dell'addizione è " + risultato);
            break;
        case 2:
            System.out.print("Inserisci il primo numero");
            num1 = oggetti.nextInt();
            System.out.print("Inserisci il secondo numero");
            num2 = oggetti.nextInt();
            risultato = num1 - num2;
            System.out.println("Il risultato della sottrazione è " + risultato);
            break;
        case 3:
            System.out.print("Inserisci il primo numero");
            num1 = oggetti.nextInt();
            System.out.print("Inserisci il secondo numero");
            num2 = oggetti.nextInt();
            risultato = num1 * num2;
            System.out.println("Il risultato della moltiplicazione è " +risultato);
            break;
        case 4:
            System.out.print("Inserisci il primo numero");
            num1 = oggetti.nextInt();
            System.out.print("Inserisci il secondo numero");
            num2 = oggetti.nextInt();
            risultato = num1 / num2;
            System.out.println("Il risultato della divisione è " + risultato);
            break;
        default:
            System.out.println("Errore, scelta non esistente");
        }

    }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-07
    • 2013-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多