我已经做了好几天了,我非常沮丧。这是我在Java学习的第一门课程,所以请依靠我缺乏知识。我应该编写一个包含用户输入的10个等级数组的程序,然后计算平均值。特别是我遇到了以下问题。
你不应该从用户那里读取双打号码,你应该读一个字符串。这是过程:
从用户那里读取一个字符串 修剪弦并获得长度 如果长度<1则用户命中并且你离开 如果长度> 0,则使用
将字符串转换为doubled =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);
}
}
答案 0 :(得分: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];
答案 1 :(得分: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);
答案 2 :(得分: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语句退出循环