-2

私はこれに数日間取り組んでおり、非常にイライラしています。これは Java の私の最初のコースなので、まだ知識が不足していることにご容赦ください。ユーザーが入力した 10 個の成績の配列を含むプログラムを作成し、平均を計算することになっています。特に、下にあるものに問題があります。

ユーザーから double の数値を読み取るのではなく、文字列を読み取る必要があります。プロセスは次のとおりです。

ユーザーから文字列を読み取り、文字列をトリムし、長さが <1 の場合は長さを取得し、ユーザーがヒットし、長さが >0 の場合は終了し、次を使用して文字列を double に変換します

d =Double.parseDouble(S);

これまでのところ、私はこれしか持っていません。この 1 週間、これに多くのコーディングを追加したり削除したりしてきました。そして、私はまだそれを機能させることができないようです。どんな助けでも大歓迎です!

import java.util.*;
import java.io.*;

public class Arrays {

    public static void main(String[] args) {

       double d = 0;
       final int SIZE = 10;
       Scanner reader = new Scanner(System.in);
       String[ ] grades = new String[SIZE];

       System.out.println("Please enter up to 10 grades.");

       for (int i = 0; i < grades.length; i++){
           System.out.print("Grade " + (i + 1) + ": "); 
           grades[i] = reader.nextLine( );
       }

       System.out.println("\nNumber of valid grades entered: " + grades.length);
    }
}
4

3 に答える 3

2

これを試して

for (int i = 0; i < grades.length; ){
   System.out.print("Grade " + (i + 1) + ": "); 
   String str = reader.nextLine();
   if(str.trim().length() > 0){
       try{
           grades[i] = Double.parseDouble(str);
           i++;
       }catch(NumberFormatException e){
           e.printStackTrace();
       }
   }
}
System.out.println("\nNumber of valid grades entered: " + i);

doubleIMHO私は、成績はieの配列であるべきだと思います

 double[] grades=new double[SIZE];
于 2013-03-26T08:44:24.270 に答える
0

私の理解によれば、これはあなたのforループでなければなりません

for (int i = 0; true; i++) {
      System.out.print("Grade " + (i + 1) + ": ");
      grades[i] = reader.nextLine();
      if (grades[i].equals("")) {
        break;
      }
       //check for number format exception if user enters invalid input 
      try {
        d = Double.parseDouble(grades[i]);
      }
      catch (NumberFormatException exception) {
       exception.printStackTrace();
      }
    }
  System.out.println("The value of double entered is : " + d);
    } 

ここでは無限回ループを実行しますが、ループごとにユーザー入力をチェックします。ユーザーが空の文字列を入力すると、break ステートメントを使用してループを終了します。

于 2013-03-26T08:51:50.860 に答える
0

次の方法で試すことができます

 int correctGrades=0;
 double[] grades=new double[SIZE];  //Create array of double instead of String
 for (int i = 0; i < SIZE; i++){
    System.out.print("Grade " + (i + 1) + ": "); 
    String str=reader.nextLine();
    if(str.length() > 0){ // If length is greater than 0 then its correct grade
      grades[i]=Double.parseDouble(str);
      correctGrades++;
    }
}
 System.out.println("\nNumber of valid grades entered: " + correctGrades);
于 2013-03-26T08:43:15.603 に答える