2012-11-29 81 views
0

我有一個數組項目,我需要一些幫助。我已經完成了大部分工作,但最終遇到了一些問題。我有能力輸入學生姓名,成績,然後將成績排序(連同姓名)並以降序排列。儘管我需要將成績設爲雙打,但他們目前被卡在Ints中。我試圖將Int的實例更改爲Double,但出現不匹配錯誤。我也設置了它,所以我在開始時輸入了數組的大小,但它要求我輸入兩次「學生人數」。我如何解決這個問題,所以它只會問一次,或者有兩個答案都有一個輸入。這是代碼。Array Project int double mismatch

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; 


       } 
      } 
     } 
    } 
} 

任何幫助,將不勝感激。

+0

你有有一個二維數組存儲的名字和年級每個學生作爲任何可能性輸入然後把它整理出來?爲什麼不定義變量數組,以便可以保存任何數據類型... – bonCodigo

+0

他要求我們有2個數組。一個用於名字,一個用於年級。 – user1861544

+0

而不是輸入開始的學生人數,在處理輸入時檢查'q'或'quit'通常會更好,因此您只需輸入'quit'即可開始輸入學生。 – Dukeling

回答

0

至於我可以看到,下面幾行必須更換:

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];