我有以下获得用户输入的代码:
456589 maths 7.8 english 8.6 end
654564 literature 7.5 physics 5.5 chemistry 9.5 end
并将代码开头的代码存储在一个称为成绩的数组中,并将代码存储在另一个称为人的数组中。我需要使用这两个数组,以便稍后显示每个课程中每个人的平均成绩。
我的代码如下
import java.util.Scanner;
public class Student
{
public static void main(String[] args)
{
Scanner s = new Scanner(System.in);
String currentAnswer = "";
String userWords = "";
String am = "";
String subj = "";
float grad;
float[] grades = new float[100];
String[] person = new String[100];
System.out.println("Enter your a.m. as well as the subjects which you sat in finals");
while(!currentAnswer.equals("end"))
{
currentAnswer = s.nextLine(); // reads the number or word
userWords += currentAnswer + " ";
if(currentAnswer.equals("000000"))
{
System.out.println("The sequence of numbers you entered is: "+userWords);
System.out.println("Exiting...");
System.exit(0);
}
String[] wordsplit = currentAnswer.split(" ");
for (String str : wordsplit)
{
try
{
grade = Float.parseFloat(str);
}
catch(NumberFormatException ex)
{
person = str;
}
}
}
System.out.println("Enter your a.m. as well as the subjects which you sat in finals");
}
}
错误消息使行变得模糊
grades = Float.parseFloat(str);
person = str` --> `String cannot be converted to String[]`<br>
似乎禁止将String转换为String数组。为了避免这种情况该怎么办?
谢谢!
再次查看代码grade = Float.parseFloat(str);
和vars声明float grad; float[] grades = new float[100]
看不到任何grade
!这不能确定编译!
[好吧,错误消息说明了一切,您正在尝试将String
分配给String[]
,因为它是一个数组,所以您想调用类似person[0] = str
的东西,与等级相同的东西,您想调用[ C0]...但是您可能要存储插入数组的人数,因此创建grade[0] = Float.parseFloat(str)
,然后调用int inserted = 0
,然后再调用grade[inserted] = Float.parseFloat(str)
(或简单地调用inserted++
。)您将需要一个整数用于人员,一个用于成绩]
尝试使用ArrayLists,宽容比数组多,而且简单易学。您可以在此处查看有关它们的更多信息:grade[inserted++] = Float.parseFloat(str)
如果要使用ArrayList,则必须在请求文件时包括它。
https://www.w3schools.com/java/java_arraylist.asp
您定义了import java.util.ArrayList;
并使用了grad
最初在定义时使用了变量名grade
grad
但是您在这里使用了float grad;
grade
也尝试使用grade = Float.parseFloat(str);
而不是ArrayList
数组