-2

我已经为此工作了几天,我非常沮丧。这是我的第一门 Java 课程,所以仍然缺乏知识,请多多包涵。我应该编写一个程序,其中包含用户输入的 10 个等级的数组,然后我计算平均值。特别是我对下面的内容有疑问。

您不应该从用户那里读取双精度数,而应该读取一个字符串。这是过程:

从用户那里读取字符串修剪字符串并获取长度,如果长度<1然后用户点击,如果长度>0,则退出,然后使用将字符串转换为双精度

d =Double.parseDouble(S);

到目前为止,我只有这个。在过去的一周里,我一直在添加和删除很多代码。而且我似乎仍然无法让它工作。任何帮助将非常感激!

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);

恕我直言,我认为成绩应该是一系列double

 double[] grades=new double[SIZE];
于 2013-03-26T08:44:24.270 回答
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 回答
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 回答