加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 使用readline()时’run’和’debug’的不同输出

发布时间:2020-12-15 00:45:13 所属栏目:Java 来源:网络整理
导读:我得到两个不同的输出相同的代码.当我调试并逐步遍历每一行时(使用Netbeans 8.1),我得到一个结果.当我一次运行代码时,我得到了不同的结果. 这是代码, public class Testing { public static void main(String... args) throws IOException { BufferedReader
我得到两个不同的输出相同的代码.当我调试并逐步遍历每一行时(使用Netbeans 8.1),我得到一个结果.当我一次运行代码时,我得到了不同的结果.

这是代码,

public class Testing {
    public static void main(String... args) throws IOException {
        BufferedReader file = new BufferedReader(new FileReader("input"));
        String str = file.readLine();
        System.out.println(str);
    }
}

这是输入文件

first
second
third
fourth

在两种情况下,代码都应首先打印第一行.但它只有在我运行代码时才会这样做.

如果我调试代码并逐步执行每一行,则打印第二行.

为什么会这样?

更新:
以下是调试截图.现在,如果我跳过它将执行System.out.println行.正如你在右侧看到的那样,str包含’second’.

解决方法

您在调试时IDE是否评估file.readLine()?在Eclipse中,可以定义完成此操作的“监视表达式”.

这可能解释了您的问题,因为当您逐行遍历代码时,只有一行定义了文件,因此可以评估上面的表达式.因此输出第二而不是第一.

更新:现在你添加了截图,很明显.这部分是Netbean开发人员的错,因为他们在标题中选择了“Variables”,这是误导性的,因为评估变量没有副作用,而评估任意表达式(如file.readLine())显然有.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读