我的代码假设读取最多100个字符串并将值存储在数组中。 当输入空字符串时,它将停止从用户读取信息。 然后它验证字符串,转换为双数并存储到单独的数组中。 然后找到所有有效数字的平均值。 唯一印刷的东西是: 1)输入的有效字符串数 2)所有有效字符串按相反的顺序排列 和 3)所有有效输入的平均值。
我认为我没问题,除非将字符串转换为双数字。我把它放在try / catch以及之后的所有其他内容中,因为否则它无法找到有效的输入。 我收到一个错误:(48:错误:不兼容的类型:字符串不能转换为double)。 我尝试在if语句中添加else,但它没有连接if和else语句。虽然当我添加else语句时,错误消失了,它只是告诉我唯一的错误是它找不到if的else。
我该怎么办?
编辑:谢谢,它现在有效。但我不认为我找到了正确的平均值。有什么建议?import java.util.*;
public class Grades{
public static void main(String args[]){
int arraycount = 0;
final int SIZE = 10;
int validArraycount = 0;
final int ValidArraySize = 10;
int valuesinValidArray = 0;
Scanner reader = new Scanner(System.in);
String initialInput = new String ("");
String [] sArray = new String[SIZE];
double [] ValidArray = new double[ValidArraySize];
double sum = 0;
boolean exit = false;
System.out.println("You may enter up to 100 grades.");
System.out.println("When you are done entering grades, press the enter/return key.");
//Prints to user. Stops if nothing is entered.
while((arraycount < SIZE)&&(exit == false)){
System.out.println("Enter line " + (arraycount+1) + ": ");
initialInput = reader.nextLine();
if (initialInput.length()<1){
exit = true;
}
else{
sArray[arraycount]=initialInput;
arraycount++;
}
}
//convert string to double
try{
double convertedInput = Double.parseDouble(initialInput);
//validate strings entered by user
if(convertedInput >= 0 && convertedInput <=100){
ValidArray[validArraycount] = initialInput;
}
//Prints number of valid values entered
if(ValidArray.length>0){
System.out.println("The number of valid grades entered is " + ValidArray[0]);
}
//for printing array backwards
for (int i = (arraycount-1); i>=0; i--){
System.out.print(ValidArray.length);
}
//calculates sum of all values in array of ValidArray (of grades)
for(double d : ValidArray){
sum += sum;
}
//avergae of valid number array
double average = (sum/ValidArray.length);
System.out.println("Average: " + average);
}
catch(NumberFormatException e){
}
}
}
答案 0 :(得分:1)
ValidArray[validArraycount] = initialInput;
可能应该是
ValidArray[validArraycount] = convertedInput;
答案 1 :(得分:0)
在这一行:
ValidArray[validArraycount] = initialInput;
您正在尝试将字符串分配给doubles
的数组。这就是错误的来源。如果您确定它将是字符串形式的双倍,您可以尝试在此调用double.parseDouble(initialInput)
。
答案 2 :(得分:0)
您似乎正在为数组分配错误的值。替换:
ValidArray[validArraycount] = initialInput;
使用:
ValidArray[validArraycount] = convertedInput;
答案 3 :(得分:0)
如前所述,要修复字符串转换问题,您的分配行应为:
ValidArray[validArraycount] = convertedInput;
要解决您的平均问题,您的代码应如下所示:
//calculates sum of all values in array of ValidArray (of grades)
for(double d : ValidArray){
sum += d; // <-------- changed from sum += sum;
}
//avergae of valid number array
double average = (sum/ValidArray.length);