java - 变量可能尚未在 java 中初始化

标签 java exception

import java.util.Scanner;
import java.util.InputMismatchException;
public class Demo
{
    public static void main(String [] agrs){
    Scanner keyBoard = new Scanner(System.in);
    int input;
    do{
        System.out.println("[ 1] Case 1.");
        System.out.println("[ 2] Case 2.");
        System.out.println("[ 3] Case 3.");
        System.out.println("[ 0] Case 0.");
        System.out.print("Your Choice: ");

        try{
            input = keyBoard.nextInt();
        }
        catch(InputMismatchException e){
            System.out.println("Error");
        }

        switch (input){
            default:
                  System.out.println("Default");
                  break;
            case 1:
                  System.out.println("One");
                  keyBoard.next();
                  break;
            case 2:
                  System.out.println("Two");
                  break;
            case 3:
                  System.out.println("Three");
                  break;
            case 0:
                  System.exit(0);
                  break;
        }
    }
    while(input != 0);
}

我想在控制台中创建一个菜单,但出现错误。 错误:变量输入可能尚未初始化。 我知道为什么我会犯这个错误,但我不知道如何解决它。 我只懂一点英语,所以我希望修改我的主题以适应更多内容 谢谢大家

最佳答案

这应该可以解决无限循环和无效输入以及编译器错误的问题:

import java.util.Scanner;
import java.util.InputMismatchException;

public class Demo {

    public static void main(String[] agrs) {

        Scanner keyBoard = new Scanner(System.in);
        // This fixes the compiler error!
        int input = -1;

        do {
            System.out.println("[ 1] Case 1.");
            System.out.println("[ 2] Case 2.");
            System.out.println("[ 3] Case 3.");
            System.out.println("[ 0] Case 0.");
            System.out.print("Your Choice: ");

            try {
                input = keyBoard.nextInt();
            } catch (InputMismatchException e) {
                // This fixes the endless loops on invalid inputs!
                System.out.println("Invalid input " + keyBoard.next());
                input = -1;
            }

            switch (input) {
                default:
                    System.out.println("Default");
                    break;
                case 1:
                    System.out.println("One");
                    keyBoard.next();
                    break;
                case 2:
                    System.out.println("Two");
                    break;
                case 3:
                    System.out.println("Three");
                    break;
                case 0:
                    System.exit(0);
                    break;
            }
        } while (input != 0);
    }
}

关于java - 变量可能尚未在 java 中初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15595259/

相关文章:

启动新线程时.NET WPF MissingMethodException

java - 可以捕获 java.util.zip.ZipError 吗?

java - android在服务中读取用户输入

java - netty中处理HTTP客户端异常

Java RMI 连接到家庭网络中的本地主机找不到正确的远程模块

java - Hadoop 将输出写入普通文件

java - 您可以使用 JAX-WS 和 SOAP 抛出链式异常吗?

java - 在java中显示从控制台上的文档读取文档文件时出错

c++ - 如果抛出异常,alloca() 是否返回内存?

exception - 在 catch 子句中获取变量