在java中如何将字符串插入字符串数组?
我有以下获取用户输入的代码:在java中如何将字符串插入字符串数组?,java,arrays,exception,java.util.scanner,Java,Arrays,Exception,Java.util.scanner,我有以下获取用户输入的代码: 456589 maths 7.8 english 8.6 end 654564 literature 7.5 physics 5.5 chemistry 9.5 end 并将句子开头的代码存储在一个名为grades的数组中,将代码存储在另一个名为person的数组中。我需要使用这两个数组,以便稍后显示每个人在每节课中的平均成绩 我的代码如下 import java.util.Scanner; public class Student {
456589 maths 7.8 english 8.6 end
654564 literature 7.5 physics 5.5 chemistry 9.5 end
并将句子开头的代码存储在一个名为grades的数组中,将代码存储在另一个名为person的数组中。我需要使用这两个数组,以便稍后显示每个人在每节课中的平均成绩
我的代码如下
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>
grades=Float.parseFloat(str);
person=str`-->`无法将字符串转换为字符串[]`
似乎禁止将字符串转换为字符串数组。我能做些什么来避免这种情况
谢谢 再次查看代码
grade=Float.parseFloat(str)代码>和vars声明
浮动梯度;浮动[]等级=新浮动[100]
看不到任何等级
!
这不能确定编译 您定义了grad
并使用了grade
最初定义时使用变量名grad
float grad;
但是你在这里使用了等级
grade = Float.parseFloat(str);
另外,尝试使用ArrayList
而不是String
array好吧,错误消息不言而喻,您正在尝试将String
分配到String[]
中,因为它是一个数组,您想调用类似person[0]=str的东西,与grade相同,您想调用grade[0]=Float.parseFloat(str)
... 但是ofc您可能想要存储插入数组中的人数,因此您创建一个intinserted=0
,然后调用grade[inserted]=Float.parseFloat(str)
,然后还调用inserted++
(或者简单地调用grade[inserted++]=Float.parseFloat(str)
。我假设您需要一个整数表示个人,一个整数表示等级尝试使用ArrayList,它比ArrayList更容易理解。您可以在此处查看有关它们的更多信息:
如果你想使用ArrayList,你必须把它包含在你的文件中
import java.util.ArrayList;
你能解释更多关于错误的信息吗?当然可以。每当我运行它时,我都无法在数组级别和人员中获得所需的结果。此外,当我尝试显示以下输出-->(456589的平均结果为)我还收到一条错误消息,person
是一个数组,str
是一个字符串-完全不同的类型。你不能将一个字符分配给另一个字符。你应该研究一下如何设置数组的元素。谢谢你,我已经解决了这个问题,但我仍然会遇到同样的错误,我无法将浮点转换为浮点[],将字符串转换为字符串[]。有什么想法吗?谢谢!是的。在你的情况下,你有一个预定义的分割返回
:[int,string,float,string]
。只需逐个直接赋值。例如:grad=float.parseFloat(wordsplit[2])
。无需循环(可以使用,但尽可能简单)谢谢,但我故意使用了分数,因为我希望每个学生的分数都在你定义的grade
的分数表中