2014-11-06 67 views
1

我很難理解如何去做我的程序。該程序應該看起來像這樣:使用二維數組創建一個年級計算器

Number of students: 3 

Number of exams : 3 

Enter student's data (first name follow by exam scores): 

Joe 85 88 93 

Mike 90 100 97 

Bill 50 68 73 

Name E1  E2  E3  Grade 


Joe 85  88  93  88.666666666667 

Mike 90  100 97  95.666666666667 

Bill 50  68  73  63.666666666664 

我在介紹Java課程,所以我剛剛學習了本週的數組。

我的代碼看起來像這樣到目前爲止。

import java.util.Scanner; 

public class GradeCalcWithArrays { 
    public static void main(String[] args) { 

     Scanner s = new Scanner(System.in); 
     int students = 0; 
     int exams = 0; 

     System.out.println("Number of students: "); 
     students = s.nextInt(); 
     String names[] = new String[students]; 

     System.out.println("Number of exams: "); 
     exams = s.nextInt(); 
     int scores[][] = new int[students][exams]; 

     for (int i, j = 0;;) { 
      System.out 
        .println("Enter student's data (first name followed by exams scores):"); 
      String studentnames = s.nextLine(); 
      studentnames = names[3]; 
      int e1 = s.nextInt(); 
      e1 = scores[0][0]; 
      int e2 = s.nextInt(); 
      e2 = scores[0][2]; 
      int e3 = s.nextInt(); 
      e3 = scores[0][3]; 

     } 

    } 
} 

我很想爲這些陣列提供一些幫助。我想我正在嘗試輸入一些東西。但是,一旦我到達老師所說的需要使用的雙數組,我就不知所措,我不知道如何去輸入數組。任何幫助深表感謝。

而且我的程序的輸出到目前爲止是:

Number of students: 3 

Number of exams: 3 

Enter student's data (first name follow by exam scores): 

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3 
    at GradeCalcWithArrays.main(GradeCalcWithArrays.java:25) 

我使用Eclipse,如果這是如何幫助也給出一個因素。

+0

陣列('numbers')與長度= ** 3 **具有以下元素:'號碼[0]','號碼[1]',和'號碼[2]'。 – 2014-11-06 02:34:15

回答

0

數組索引從0開始。由於name是一個可容納3個元素的String數組,因此有效索引爲0-2。您嘗試在name[3]中存儲Stringstudentnames),這是一個無效的位置。因此,你會得到一個ArrayOutOfBounds異常。

所以代碼應該是:

import java.util.Scanner; 

public class GradeCalcWithArrays { 
    public static void main(String[] args) { 

     Scanner s = new Scanner(System.in); 
     int students = 0; 
     int exams = 0; 

     System.out.println("Number of students: "); 
     students = s.nextInt(); 
     String names[] = new String[students]; 

     System.out.println("Number of exams: "); 
     exams = s.nextInt(); 
     int scores[][] = new int[student][exams]; 

     for (int i = 0;i<students; i++) { 
      System.out.println("Enter student "+ i+1 +" data (first name followed by exams scores):"); 
      names[i] = s.nextLine(); 

      for(int j=0;j<exams;j++) 
      { 
       scores[i][j] = s.nextInt(); 
      } 

     } 
    //Rest of your code to print the table goes here 
    } 
} 
+0

如何解決這個問題呢?我需要能夠在沒有這個問題的情況下輸入我的名字。通過創建我的數組'String students = new String [students];'這會永遠是個問題嗎? – Daniel 2014-11-06 02:31:01

+0

@丹尼爾,對不起,延遲。我編輯了代碼。問題是,當你做'String students = new String [students];'如果'students'是3,那麼有效的位置是'students [0]'''students [1] '和'學生'而不是'學生'[3]'。這是因爲我的答案中提到了數組索引從0開始而不是1。你訪問'學生[3]'這是一個無效的位置,因此,你會得到ArrayOutOfBounds異常。 除此之外,您必須使用循環來接受輸入值,因爲當輸入3以外的任何數字時,您的代碼將不起作用 – 2014-11-06 11:16:58

+0

非常感謝幫助我使用該代碼。我想知道如何去輸出代碼呢?我不知道如何平均我的成績,我的程序仍然無法正常工作,因爲我的輸出方法不正確。 – Daniel 2014-11-11 19:10:19