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でうまくいきましたが、私は何をすべきかを理解しなければなりませんでした.3つのintを入力してください.

通常は、ユーザーに入力を求める方が適切です。これは 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 のバグだと思います。

実行後の入力と出力の例を次に示します(各入力行の後にEnterキーを押します)

3 
4
5
4

(つまり、コードが正しく機能するという意味で、4 は 3,4,5 の平均です...)

BlueJ のどのバージョンを使用していますか? BlueJ を再起動したと思いますか、それともあなたのマシンでさえ機能しませんでしたか?

于 2013-09-13T01:47:32.947 に答える