1. ホーム
  2. java

[解決済み] どのように配列の10未満の値(x * 2)を倍増するコードを取得するには?(Java)

2022-02-25 22:52:17

質問

Javaプログラミングのオンラインクラス(初心者です)を受講しているのですが、コードを正しく完成させる方法がわかりません。私はすでに含まれると思うものを書いていますが、私はコードを完全に動作させるために何かが不足しています。

ディレクション minValより小さい要素の値を2倍にする。例:もし minVal = 10 であれば dataPoints = {2, 12, 9, 20} は次のようになります。 {4, 12, 18, 20} .

public class StudentScores {
   public static void main (String [] args) {
      final int NUM_POINTS = 4;
      int[] dataPoints = new int[NUM_POINTS];
      int minVal = 0;
      int i = 0;

      dataPoints[0] = 2;
      dataPoints[1] = 12;
      dataPoints[2] = 9;
      dataPoints[3] = 20;

      minVal = 10;
    // DO NOT EDIT ANYTHING ABOVE THIS COMMENT. ABOVE IS THE DEFAULT CODE OF ASSIGNMENT

      for (i = 0; dataPoints[i] < minVal; ++i) {
         dataPoints[i] = dataPoints[i] * 2;
      }

    // DO NOT EDIT ANYTHING BELOW THIS COMMENT. BELOW IS DEFAULT CODE OF ASSIGNMENT
      for (i = 0; i < NUM_POINTS; ++i) {
         System.out.print(dataPoints[i] + " ");
      }
      System.out.println();

      return;
   }
}

私はオンラインの対話型書籍を使っているので、デフォルトのコードを編集したり変更したりすることができないので、いじってはいけないもののコメントを作りました。さらに、この章では配列を扱っています。

stackoverflowの不文律を知らないという意味で初心者なのですが、javaで配列の値を2倍にする方法をネットで何度も検索しているのですが、参考になる検索結果が出ません。

私が受け取るエラーメッセージは

Testing minVal = 10 and dataPoints = {2, 12, 9, 20}
Expected output:  4 12 18 20 
Your output:  4 12 9 20 

コンパイラは行を完全に読んで、9も10より小さいので2倍して18にすることを登録できるはずだと思ったのですが、そうではありません。9も読み取るようにするには何が足りないのでしょうか?

解決方法は?

あなたのコードでは、12 < 10 が false と評価され、ループから外れてしまい、その結果、間違った出力を与えています。以下のコードを確認してください。

 for (i = 0; dataPoints[i] < NUM_POINTS ; ++i) {
         if(dataPoints[i] < minVal) {
         dataPoints[i] = dataPoints[i] * 2;
      }
  }

配列の全要素をループして、ある要素が < minVal ならば、それを 2 倍にしたのです。