【问题标题】:How to insert a String into a String array in java?如何在java中将字符串插入字符串数组?
【发布时间】:2020-07-28 08:14:52
【问题描述】:

我有以下获取用户输入的代码:

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>

似乎禁止将 String 转换为 String 数组。我该怎么做才能避免这种情况?

谢谢!!

【问题讨论】:

  • 您能否详细解释一下该错误
  • 当然可以。每当我运行它时,我都没有在数组等级和人员中得到想要的结果。此外,当我尝试显示以下输出时 --> (456589 的平均结果为 )我也会收到一条错误消息
  • person 是一个数组,str 是一个字符串——完全不同的类型。您不能将一个分配给另一个。你应该研究一下如何设置数组的元素。

标签: java arrays exception java.util.scanner


【解决方案1】:

再看代码

grade = Float.parseFloat(str);和vars声明
float grad; float[] grades = new float[100] 看不到任何grade

这不能确定编译!

【讨论】:

  • 谢谢我修复了这个问题,但我仍然遇到同样的错误,我无法将浮点数转换为浮点数 [] 并将字符串转换为字符串 []。关于我如何写这个的任何想法?谢谢!
  • 是的。在您的情况下,您有一个预定义的split return[int, string, float, string, float, string] 。直接一一赋值即可。例如:grad = Float.parseFloat(wordsplit[2])。不需要循环(可以使用,但尽量简单)
【解决方案2】:

您定义了grad 并使用了grade

最初定义时使用变量名grad

float grad;

但是你在这里使用了grade

grade = Float.parseFloat(str);

也尝试使用ArrayList 代替String 数组

【讨论】:

  • 谢谢,但我故意使用成绩,因为我希望每个学生的成绩都在成绩数组中
  • for grade 你定义了grad
【解决方案3】:

嗯,错误信息不言自明,你正试图将String 分配给String[],因为它是一个数组,你想调用类似person[0] = str 的东西,与等级相同,你想调用grade[0] = Float.parseFloat(str) ...但是ofc您可能想要存储插入数组的人数,因此您创建一个int inserted = 0,然后调用grade[inserted] = Float.parseFloat(str),然后再调用inserted++(或者简单地调用grade[inserted++] = Float.parseFloat(str)..我假设人需要一个整数,成绩需要一个整数

【讨论】:

    【解决方案4】:

    尝试使用ArrayLists,比数组更宽容,而且简单易学。你可以在这里看到更多关于它们的信息: https://www.w3schools.com/java/java_arraylist.asp

    如果你想使用 ArrayList,你必须在你的文件请求中包含这个。

    import java.util.ArrayList;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-20
      • 1970-01-01
      • 1970-01-01
      • 2019-12-18
      • 2011-10-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多