Как вставить строку в массив строк в java? - PullRequest
0 голосов
/ 15 апреля 2020

У меня есть следующий код, который получает пользовательский ввод:

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>

Кажется, что преобразование строки в массив строк запрещено. Что я могу сделать, чтобы избежать этого?

спасибо !!

Ответы [ 4 ]

0 голосов
/ 15 апреля 2020

Попробуйте использовать ArrayLists, они простительнее массивов и просты в освоении. Вы можете увидеть больше о них здесь: https://www.w3schools.com/java/java_arraylist.asp

Если вы хотите использовать ArrayList, вы должны включить это в начало вашего файла.

import java.util.ArrayList;
0 голосов
/ 15 апреля 2020

Вы определили grad и использовали grade

Первоначально, когда вы определили, вы использовали имя переменной grad

float grad;

Но вы использовали grade здесь

grade = Float.parseFloat(str);

Также попробуйте использовать ArrayList вместо String array

0 голосов
/ 15 апреля 2020

Ну, сообщение об ошибке говорит само за себя, вы пытаетесь присвоить String в String[], так как это массив, вы хотите вызвать что-то вроде person[0] = str, то же самое с оценкой, вы хотите вызвать grade[0] = Float.parseFloat(str) ... но из c вы, вероятно, хотите сохранить число лиц, вставленных в массив, поэтому вы создаете int inserted = 0, а затем вызываете grade[inserted] = Float.parseFloat(str), а затем после этого вызываете inserted++ (или просто вызываете grade[inserted++] = Float.parseFloat(str) .. Полагаю, вам понадобится одно целое число для лиц и одно для оценок

0 голосов
/ 15 апреля 2020

Посмотрите еще раз на код

grade = Float.parseFloat(str); и объявление vars
float grad; float[] grades = new float[100] Не видно ни одного grade!

Это точно не может быть скомпилировано!

...