java - (Java) Switch 语句中的全局变量问题

标签 java variables switch-statement

我正在创建一个带有开关的简单菜单驱动程序(我之前已经做过) 陈述。我已经声明了全局变量 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 可能1在您第一次切换后尚未初始化。

1这可能是真的,也可能不是。编译器没有感知能力,它无法确定所有可能的代码路径。

关于java - (Java) Switch 语句中的全局变量问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36108925/

相关文章:

java - 为 Future 回调编写 junit 测试用例

MySQL建一个变量名?

swift - 从另一个类 Swift 访问变量

Java Switch 语句,一起使用 case 值?

java - 将 Ruby 翻译成 Java : Does Java have a construct that is close to the Ruby switch statement

javascript - jquery switch 来更改附加到的列表

java - Gradle:如何使用并排项目配置多项目设置

java - 即使我的所有代码都调用 close 方法,HikariCP 也会检测到连接泄漏

java - 使用 jersey-apache-client-1.18 的 SSL handshake_failure

string - 如何在Powershell中两次评估字符串