java - 无法在 while 循环内设置变量

标签 java

Java 新手,如果这是一个愚蠢的问题,我很抱歉。我想从 while 循环内部为几个变量分配新值,但这不起作用。尝试编译时出现错误“局部变量 newString 可能尚未初始化”。这是一个例子:

public class Test {

    public static String example() {
        String first;
        String second;
        String newString;
        int start = 1;

        while (start<5) {
            if (start<4) {
                first = "hello";
                second = "world";
                newString = first + second;
            }
            start += 1;
        }
        return newString;
    }

    public static void main(String[] args) {
            System.out.println(example());
    }
}

最佳答案

当您从方法返回变量作为结果时,编译器需要确保为该变量分配一个值(在您的情况下是 newString )。

尽管您很清楚条件 start < 4将是true在某些时候,编译器不够智能,无法弄清楚这一点,这意味着您必须仅返回变量,这些变量肯定具有值。

根据您的方法的目的,您有以下机会:

String newString = "";

在这种情况下,您确定您的方法永远不会返回 null ,在某些情况下查找错误可能会很棘手。

另一个机会是

String newString = null;

如果你想让你的方法返回 null值。

很明显,在这种情况下,您最终将输入 if -block 并为变量 newString 赋值在其他情况下,它不会那么明显,因此您需要确定是否允许您的方法返回 null值与否。

关于java - 无法在 while 循环内设置变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24111266/

相关文章:

java - 嵌套接口(interface)和实现类行为

java - 使用 RxJava 主题作为回调包装器

java - 插入排序代码重新检查

java - CRUD Drools 在运行时规则

java - 在带有 JavaFX 的 Java 中使用命令行参数

java - Maven 上最新版本的 MapReduce 库

java - 启用spring security后静态资源不再可用

java - 如何得到whenComplete和thenCompose的组合效果?

Java 简单 RMI 聊天应用程序

java - 如何用 groovy 文件替换我的小部件 Controller ?