为什么每次尝试在数组中插入新信息时都会收到错误消息?

问题描述 投票:0回答:4

我有以下代码可以获取用户输入,例如->

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

错误消息使行等级= Float.parseFloat(str);and person = str->字符串不能转换为String []谢谢!

java arrays exception java.util.scanner
4个回答
0
投票
再次查看代码grade = Float.parseFloat(str);和vars声明float grad; float[] grades = new float[100]看不到任何grade!这不能确定编译!

0
投票
[好吧,错误消息说明了一切,您正在尝试将String分配给String[],因为它是一个数组,所以您想调用类似person[0] = str的东西,与等级相同的东西,您想调用[ C0]...但是您可能要存储插入数组的人数,因此创建grade[0] = Float.parseFloat(str),然后调用int inserted = 0,然后再调用grade[inserted] = Float.parseFloat(str)(或简单地调用inserted++。)您将需要一个整数用于人员,一个用于成绩]

0
投票
您定义了grade[inserted++] = Float.parseFloat(str)并使用了grad

0
投票
尝试使用ArrayLists,宽容比数组多,而且简单易学。您可以在此处查看有关它们的更多信息:grade = Float.parseFloat(str);
© www.soinside.com 2019 - 2024. All rights reserved.