当前位置: 首页 > 知识库问答 >
问题:

为什么这个代码不起作用?它给了我一个错误“变量h可能没有被初始化”[duplicate]

狄宇
2023-03-14

以下代码未通过编译。这给了我一个错误:

变量h可能尚未初始化

public class MnmEx {

    public static void main(String[] args) {
        
        int h; 
        for (int i = 0; i < 50; i++) {
            for (int j = 0; j < 50; j++) {
                if (j == 10) {
                    h = 20; 
                }
            }
        }
        System.out.println(h); 
    }
}

共有1个答案

满才
2023-03-14

编译器不会分析for循环,以确保h始终在循环中赋值。因此,它不知道在您尝试打印hSystem.out.println(h))时,它是否已被分配。

这可以通过给h一个初始值来轻松避免:

int h = 0;
 类似资料:
  • 问题内容: 当我尝试编译时: 我得到这些错误: 在我看来,我在方法的顶部初始化了它们。怎么了 问题答案: 你声明了它们,但没有初始化它们。初始化它们是将它们设置为等于一个值: 因为未初始化变量,但在循环中增加了变量(例如),所以会收到错误消息。 Java原语具有默认值,但如下一位用户所述 当声明为类成员时,它们的默认值为零。局部变量没有默认值

  • 我的编译器不会有它(现在怎么办?我必须完全重写整个应用程序吗? 要查看编译器拒绝的行,请执行系统搜索。出来println(celsius输出“C”); 当试图编译时,编译器告诉我,“变量celsiusOutput可能尚未初始化。”编译器对另外两个输出项中的任何一个都不说同样的话:华氏输出和开尔文输出。

  • 我只是不明白为什么这不起作用: HelloWorld.java:15:错误:变量isOdd可能没有被初始化 如果(isOdd==false){

  • 问题内容: 每次尝试编译时,它表明变量可能未初始化。我认为可能是问题所在。告诉我如何在中运行2条语句。 问题答案: d1不在else块中且仅在if或else if块中初始化,因此,如果if()和elseif()块中的所有语句均为false,则控制器进入else块,而d1仍然不是初始化。因此,当您尝试在system.out.println()中访问它时,编译器正确地抛出该错误。您可能想在一开始将值初

  • 我已经初始化了变量yn,但它一直说我没有初始化。试图直接在扫描仪上初始化它,但它有错误,并再次说它已经在方法中初始化。

  • 我遇到了一个有趣的问题,我不明白发生了什么: 据我所知,我提供的单个整数参数可以解释为使用参数调用构造函数,也可以解释为使用初始化列表的构造函数。似乎只有当我提供左值时才调用initialiser_list构造函数,但当我提供r-value(至少是文字)时,构造函数。为什么会这样? 这也意味着: 结果仅为大小为1的向量; 结果是一个大小为num\u元素的向量,但我认为应该避免这种初始化,因为偶尔会