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

为什么 j 在脱离循环时会失去其值?[重复]

万俟玉书
2023-03-14
import java.util.Scanner;

public class InSearchOfAnEasyProblem {
    public static void main(String args[]){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int j;
        for(int i=0; i<n; i++){
            j=sc.nextInt();
            if(j==1){
                System.out.println("HARD");
                break;
            }
        }
        if(j==0)
            System.out.println("EASY");
    }
}

这段代码没有编译,它显示了一个错误,表示变量j可能尚未初始化,但我们正在循环中获取输入,即使它是同一个变量中的多个输入,也应该进行修改,对吗?在这种情况下,当j从循环中出来时,它不应该保持最后一个输入吗?

共有2个答案

阳福
2023-03-14

必须初始化局部变量。(在你的情况下 j

如果它是一个类变量,它会自动初始化。

在此处阅读更多内容:变量可能尚未初始化错误

因此,一个简单的修复方法就是初始化int j=0;

雍宇定
2023-03-14

局部变量没有默认值。由于Java编译器无法判断程序是否会进入循环

int j;
if(j==0)
    System.out.println("EASY");

可能是此代码的可能执行路径,将未初始化的变量与零进行比较。

解决方案:将一些值放入j,int j=0;会起作用。

 类似资料:
  • 我们一直在学习循环和嵌套循环。 我的问题; 为什么增量结束后,内部for循环中变量的值会自动重置?但是,在外部for循环中,变量保持其值。 例如: 在这种情况下,程序运行10次,同时将i和count增量增加到18,然后返回到6?每次。。。有人能解释一下为什么会这样吗?

  • 问题内容: 如果我在一个循环中有一个循环,并且一旦满足一条语句,我想中断主循环,那我应该怎么做? 这是我的代码: 问题答案: 使用标记的中断: 另请参阅 Java代码中的“循环:”。 这是什么,为什么会编译? 文献资料

  • 我是Java新手。我正在尝试遍历一个文件并将每个字符串写入ArrayList。为此,我有如下代码: 然而,由于某种原因,这段代码陷入了无限循环。即使我将打印语句作为当块的第一行,它也不会执行。 accountData.txt文件是这样排列的: 我已经读了很多遍,经常读到这是个问题,因为人们没有用Scanner.next()来移动指针,但我相信我正在这样做。我不知道哪里出了问题。 感谢您的帮助!

  • 问题内容: 以下示例在Node.js书中给出: 解释了while循环为何阻止执行时,作者说: 节点将永远不会执行超时回调,因为事件循环卡在了循环中,而循环在第7行开始了,因此永远不会给它处理超时事件的机会! 但是,作者没有解释为什么这是在事件循环的背景下发生的,还是在幕后真正发生了什么。 有人可以详细说明吗?为什么节点卡住?以及如何在保留控制结构的同时更改上述代码,以使事件循环不会被阻塞,并且代码

  • 在我的程序中,我发现当为时,循环无法正确退出。它看起来像整数溢出,远远大于10,循环不会停止。请告诉我发生了什么,以及如何在大型项目中避免这个错误。 代码链接

  • 如果我有时运行这些程序,它会在打印“玩家赢”或“玩家输”后继续运行,我可以找到原因。。 这里的输出: 球员滚轴3 2=5 分数是5 玩家滚轮6 4=10 游戏者滚轴6=12 玩家滚轮5 5=10 球员滚轴12=3 球员滚轴1 3=4 球员获胜 球员滚轴4 6=10 球员滚轴4 1=5 构建成功(总时间:0秒)