2

我刚刚开始学习 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);
  }
}

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

4

4 回答 4

4

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

更多信息:

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

于 2013-09-13T02:22:58.850 回答
1

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

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

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

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

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

于 2013-09-13T15:42:47.330 回答
0

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

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

我希望你会看到终端窗口。

于 2014-12-31T13:51:54.940 回答
0

该代码在 IntelliJ IDEA 中对我来说编译得很好,并且运行良好。所以我认为这是一个 BlueJ 错误。

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

3 
4
5
4

(这意味着您的代码可以正常工作,4 是 3、4、5 的平均值......)

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

于 2013-09-13T01:47:32.947 回答