Массив проекта в двойном несоответствии

У меня есть проект массива, с которым мне нужна небольшая помощь. Я сделал большую часть этого, но я столкнулся с парой проблем ближе к концу. У меня есть возможность вводить имена учеников, оценки, а затем сортировать оценки (вместе с именами) и печатать в порядке убывания. Однако мне нужны оценки, установленные как двойные, и в настоящее время они застряли как целые. Я пытался изменить экземпляры Int на Double, но получаю ошибку несоответствия. Я также установил его, поэтому я ввожу размер массива в начале, но он дважды запрашивает «Количество студентов». Как мне исправить это, чтобы он спрашивал только один раз или имел 1 ввод для обоих ответов. Вот код.

import java.util.Scanner;

public class Grades {

    public static void main(String[]args){

        {
            Scanner GradeIn = new Scanner(System.in);
            Scanner NameIn = new Scanner(System.in);
            System.out.print( "How many students are there? " );
            int[]GradeArray = new int[GradeIn.nextInt()];
            String[]nameArray = new String[GradeIn.nextInt()];

            for( int i=0 ; i<GradeArray.length ; i++ ) 
            {
                System.out.println( "Enter Grade for Student " + (i+1) + ": " );
                GradeArray[i] = GradeIn.nextInt();
                System.out.println( "Enter Name of Student " + (i+1) + ": " );
                nameArray[i] = NameIn.nextLine();
            }

            bubbleSort(GradeArray, nameArray);


            for (int i = 0; i<GradeArray.length; i++)
            {
                System.out.print(nameArray[i]);
                System.out.print(": ");
                System.out.print(GradeArray[i] + "   ");

            }
        }
    }

    private static void bubbleSort(int[]GradeArray, String[] nameArray){

        int n = GradeArray.length;
        int temp = 0;
        String temp2;

        for(int i=0; i<n; i++){
            for(int j=1; j<(n-i);j++){

                if(GradeArray[j-1]<GradeArray[j]){
                    //swap
                    temp=GradeArray[j-1];
                    GradeArray[j-1]=GradeArray[j];
                    GradeArray[j]=temp;

                    temp2=nameArray[j-1];
                    nameArray[j-1]=nameArray[j];
                    nameArray[j]=temp2;


                }
            }
        }
    }
}

Любая помощь будет оценена по достоинству.


person user1861544    schedule 29.11.2012    source источник
comment
Есть ли у вас возможность иметь двумерный массив, в котором в качестве входных данных хранятся имя и оценка для каждого учащегося, а затем они сортируются? Почему бы не определить массив вариантов, чтобы вы могли сохранить любой тип данных...   -  person bonCodigo    schedule 29.11.2012
comment
Он попросил, чтобы у нас было 2 массива. Один для имен, один для оценок.   -  person user1861544    schedule 29.11.2012
comment
Вместо того, чтобы вводить количество студентов для начала, обычно лучше проверять «q» или «выйти» при обработке ввода, чтобы вы могли просто начать вводить студентов, пока не наберете «выйти».   -  person Bernhard Barker    schedule 29.11.2012


Ответы (1)


Насколько я вижу, следующие строки должны быть заменены:

int[]GradeArray = new int[GradeIn.nextInt()];
GradeArray[i] = GradeIn.nextInt();
private static void bubbleSort(int[]GradeArray, String[] nameArray){

с:

double[]GradeArray = new double[GradeIn.nextInt()];
GradeArray[i] = GradeIn.nextDouble();
private static void bubbleSort(double[]GradeArray, String[] nameArray){

Если это не работает после их замены, может быть полезно также опубликовать, как вы это изменили.

Для задачи о количестве студентов дважды измените:

int[]GradeArray = new int[GradeIn.nextInt()];
String[]nameArray = new String[GradeIn.nextInt()];

to:

int count = GradeIn.nextInt();
int[]GradeArray = new int[count];
String[]nameArray = new String[count];
person Bernhard Barker    schedule 29.11.2012