我正在用开关创建一个简单的菜单驱动程序(之前已经完成)
声明。我已经声明了全局变量cuser,它适用于第一个
开关中的情况。但是,如果我在其他情况下使用它,它会认为该cuser
尚未初始化。用另一个变量引用cuser也不起作用。看起来应该可以,但是我不知道为什么不可以。
String cuser; //Current user of e-mail system
String recip; //Recipient of message
char choice; //User input
do
{
choice = menuScan.next().charAt(0);
do
{
switch(choice)
{
case 'I':
case 'i':
System.out.println("Username: ");
cuser = menuScan.next();
System.out.println("Logged in.");
break;
case 'S':
case 's':
System.out.println("Recipient: ");
recip = menuScan.next();
m = new Message(cuser,recip);
System.out.println("Enter message. Blank line to quit: ");
m.append(menuScan.nextLine());
ms.deliver(m);
break;
case 'R':
case 'r':
ms.printMessages(cuser);
break;
case 'O':
case 'o':
System.out.println("Logged out.");
break;
//No 'Q' case; serves no purpose other than termination
default:
System.out.println("Invalid selection.");
break;
}
}
while(choice != 'O' && choice != 'o');
}
while(choice != 'Q' && choice !='q');
最佳答案
将String cuser;
更改为String cuser = null;
或String cuser = "";
Java编译器检测到您的第一个cuser
之后switch
可能没有被初始化。
1这可能是正确的,也可能不是。编译器不是有感觉的,并且无法确定所有可能的代码路径。
关于java - (Java)Switch语句中的全局变量问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36108925/