【问题标题】:Array Project int double mismatch数组项目 int 双重不匹配
【发布时间】:2012-11-17 02:40:23
【问题描述】:

我有一个需要帮助的数组项目。我已经完成了大部分工作,但最后我遇到了一些问题。我可以输入学生姓名、成绩,然后对成绩进行排序(连同姓名一起)并按降序打印。不过,我需要将成绩设置为双打,而它们目前被困为整数。我尝试将 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;


                }
            }
        }
    }
}

任何帮助将不胜感激。

【问题讨论】:

  • 您是否有可能拥有一个 2D 数组来存储每个学生的姓名和成绩作为输入,然后对其进行排序?为什么不定义一个变量数组,这样您就可以保存任何数据类型...
  • 他要求我们有 2 个阵列。一个用于姓名,一个用于成绩。
  • 与其输入要开始的学生人数,不如在处理输入时检查“q”或“退出”,这样您就可以开始输入学生,直到输入“退出”。

标签: java arrays int double mismatch


【解决方案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()];

到:

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

【讨论】:

    猜你喜欢
    • 2022-01-08
    • 1970-01-01
    • 2015-08-04
    • 1970-01-01
    • 1970-01-01
    • 2011-04-24
    • 2021-08-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多