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);
}
我想在控制台中制作一个菜单但是却出错了。 错误:可能尚未初始化变量输入。 我知道为什么我接受错误,但我不知道如何解决它。 我只知道一点英语,所以我希望mod编辑我的主题以适应更多 谢谢大家
答案 0 :(得分:2)
这应该可以解决无限循环和无效输入以及编译器错误的问题:
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);
}
}
答案 1 :(得分:0)
在实际分配输入之前,可能会从'keyBoard.nextInt()'抛出异常。如果是这样,那么考虑下面的switch语句中会发生什么......或者更糟糕的是,你如何退出do-while循环。
答案 2 :(得分:0)
使用0或任何值初始化int输入。因为它在使用变量输入之前从用户获得输入。
int input=0;
它将解决您的问题。
答案 3 :(得分:0)
这应该解决它,
int input = 0;
答案 4 :(得分:0)
您必须在使用之前初始化变量..
int input;
您可以使用一些虚拟值初始化此变量:
int input = -1;
答案 5 :(得分:0)
您需要将输入变量初始化为某个默认值。它是一个局部变量,默认情况下不会初始化局部变量。因此,您需要为它们明确指定一些默认值。
检查出来:
int input;
do{
// Some statements
try {
input = keyBoard.nextInt();
} catch(InputMismatchException e) {
System.out.println("Error");
}
// What if the above try-catch block is bypassed. In that case input will not have any value assigned to it.
// Hence, you get the error
switch (input){
所以改变第一个语句如下:
int input = -1;
答案 6 :(得分:0)
我认为你可以将while和switch语句包含在try块
中