BlueJ 试图永远运行我的 Java 程序

Posted

技术标签:

【中文标题】BlueJ 试图永远运行我的 Java 程序【英文标题】:BlueJ is trying to run my Java program forever 【发布时间】:2013-09-17 14:02:27 【问题描述】:

我刚刚开始学习 Java(我也是 C#.NET 程序员)。我正在尝试获取多个用户输入并将它们添加到数组中。之后,我根据给定值计算平均值。

出于某种原因,BlueJ 会尝试永远运行我的 Java 程序。意思是,它会一直显示进度条,并且不会打开任何控制台窗口。

我不确定我的代码或 BlueJ 是否有问题,因为我以前从未遇到过这样的问题。

这是我的代码:

import java.util.Scanner;

public class Problem22 
  public static void main(String[] args) 
    Scanner scanner = new Scanner(System.in);

    int inputs = 2;
    int[] values = new int[3];

    while (inputs > -1) 
      values[inputs] = scanner.nextInt();

      inputs--;
    

    System.out.println(averageValue(values));
  

  private static int averageValue(int[] values) 
    int sum = 0;

    for (int i : values) 
      sum += i;
    

    return (sum / values.length);
  

请帮助我尝试并找到解决方案。

【问题讨论】:

没有课?还是只是一个sn-p,你能粘贴完整的代码吗? @Eran Medan,用完整代码更新了帖子 谢谢,代码在 Intellij IDEA 中编译得很好,看起来像有效的 Java。所以这似乎是 bluej 本身的问题(例如错误?)。你确定它不是简单地等待你在控制台中输入输入之类的吗? @Eran Medan,是的。控制台窗口根本没有弹出。 您是否尝试将其关闭并重新打开? 【参考方案1】:

似乎在 BlueJ 中,您必须在请求输入之前提供输出。这是一个很奇怪的错误。

更多信息:

http://www.bluej.org/help/faq.html#hangoninput

【讨论】:

这不是错误。终端窗口不会自动显示,直到/除非输出发生,仅此而已。如果手动打开终端窗口,很简单,没有问题。【参考方案2】:

您的代码在 Eclipse 中为我工作,但我必须意识到我应该做什么,输入三个整数。

通常最好提示用户输入。这可能是 BlueJ 中的一个错误,但在请求输入之前必须输出提示也不错。这通常是一件好事。

使用提示链接到我的代码版本:

https://gist.github.com/kaydell/6552282

我相信不提示输入的唯一原因是您正在从文件或其他内容中读取输入。当你的程序与用户交互时,你的程序应该提示用户输入。

【讨论】:

【参考方案3】:

代码在 IntelliJ IDEA 中编译得很好,运行也很好。所以我认为这是一个 BlueJ 错误。

这是一个运行后的输入和输出示例(在每个输入行后按回车键)

3 
4
5
4

(根据您的代码正常工作的方式,4 是 3、4、5 的平均值...)

您使用的是哪个版本的 BlueJ?我假设重启到 BlueJ 或者你的机器没有工作?

【讨论】:

我已经尝试重启我的机器和 BlueJ,它似乎没有工作。【参考方案4】:

终端窗口仅在有输出时打开。程序只要求输入。因此它是终端窗口没有打开。用这个替换你的sn-p:

`while (inputs > -1) 
 
 System.out.println("Input number - "+inputs);
  values[inputs] = scanner.nextInt();
  inputs--;
 `

希望你能看到终端窗口。

【讨论】:

以上是关于BlueJ 试图永远运行我的 Java 程序的主要内容,如果未能解决你的问题,请参考以下文章

编写应该“永远”运行的 Java 程序时要考虑啥

为啥我的程序退出并且不能永远运行

如何使 Java 桌面应用程序永远不会让系统休眠并在后台运行?

为啥我的 Cocoa 应用程序中的某些行需要永远运行?

永远不会结束marshmallow android的后台服务

为啥我的 Golang 频道写入永远阻塞?