2014-02-09 101 views
0

我得到一個不同的output.The輸出我希望是 - 測驗:66% 實驗室:88% 實驗室出勤率:81% 期中考試:91% 決賽:不適用 整體平均:85%。 但我發現了獲得不同的輸出

輸出:

[[email protected] 
[[email protected] 
[[email protected] 
[[email protected] 

我的方法正規化是假設得到的百分比,然後轉到平均法。我將這種方法稱爲quizArray,labArray,出席率,midterms以獲得每個人的成績。

import java.io.*; 
import java.util.*; 

public class FindGrade { 
    public static final int NUM_SCORE_TYPES = 5; 

    public static void main(String[] args) { 
     Scanner scan = null; 
     int[] quizArray = null; 
     int[] labArray = null; 
     int[] attendance = null; 
     int[] midterms = null; 
     int quizgrade = 0; 
     int labgrade = 0; 
     int attendance_1 = 0; 
     int midterms_1 = 0; 
     String name; 


     try { 
      scan = new Scanner(new File("input.txt")); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
      return; 
     } 

     // each iteration is for single exam type (ie: Quizzes is the 1st one) 
     for (int i = 0; i < NUM_SCORE_TYPES; i++) { 

      name = scan.next(); 
      int numScores = scan.nextInt(); 
      int maxGrade = scan.nextInt(); 

      if (name.equals("Quizzes")) { 
       quizArray = new int[numScores]; 
       readScores(quizArray, numScores, scan); 


      } else if (name.equals("Labs")) { 
       labArray = new int[numScores]; 
       readScores(labArray, numScores, scan); 

      } else if (name.equals("Lab_attendance")) { 
       attendance = new int[numScores]; 
       readScores(attendance, numScores, scan); 

      } else if (name.equals("Midterms")) { 
       midterms = new int[numScores]; 
       readScores(midterms, numScores, scan); 

      } 

     } 

    } 


    public static void readScores(int[] scoreArray, int numScores, Scanner scan) { 
     for (int i = 0; i < numScores; i++) { 
      scoreArray[i] = scan.nextInt(); 
     } 
     average(scoreArray, numScores); 
    } 

    public static int normalize(int[] scoreArray, int maxGrade) { 
     int total = 0; 
     for (int i = 0; i < scoreArray.length; i++) { 
      total += scoreArray[i]; 
     } 
     int percent = Math.round(total * 100/maxGrade); 
     return percent; 
    } 

    public static double average(double[] scoreArray, int numScores) { 
     double sum = 0; 
     for (int i = 0; i < scoreArray.length; i++) { 
      sum += scoreArray[i]; 
     } 
     double average = sum/numScores; 

     return average; 


    } 

輸入文件:

Quizzes 8 10 
5 8 9 10 4 0 10 7 
Labs 6 100 
95 90 100 87 63 92 
Lab_attendance 16 1 
1 1 1 0 1 1 1 1 0 1 1 1 1 0 1 1 
Midterms 2 100 
87 94 
Final 0 100 
+0

你'在源代碼中到底缺少一個'}。 –

+0

你在哪裏輸出?你在哪裏調用'normalize'和'average'方法? – Hannes

+0

我的輸出在頂部。 – user124557

回答

1

每個對象具有toString()方法,其默認將顯示類名錶示,然後加入@然後哈希碼。我假設你正在打印System.out.println(someArray)

您應該使用Arrays#toString()(下面是它的實現,因此您可以更好地理解它):

3860  public static String toString(int[] a) { { 
3861  if (a == null) 
3862   return "null"; 
3863  int iMax = a.length - 1; 
3864  if (iMax == -1) 
3865   return "[]"; 
3866 
3867  StringBuilder b = new StringBuilder(); 
3868  b.append('['); 
3869  for (int i = 0; ; i++) { 
3870   b.append(a[i]); 
3871   if (i == iMax) 
3872    return b.append(']').toString(); 
3873   b.append(", "); 
3874  } 
3875 } 
+0

這給了我整個數組。我試圖得到百分比:66% – user124557