2013-12-23 56 views
2

我有一個程序,用戶輸入許多等級並存儲到數組中,該數組然後被程序用來計算各種值。如何創建一個由用戶輸入定義長度的靜態數組?

我用,所以我想定義一個靜態數組,所有的方法可以參考和將舉行的等級多種方法。不過,我希望它的長度等於輸入的等級數。

public class GradeStatistics { 
static int numGrades, sum = 0; 
static int[] grades = new int[numGrades]; 

public static void main(String args[]){ 
    readGrades(); 
    calcSum(); 

readGrades()方法發現了許多成績有怎樣將它分配給numGrades

public static void readGrades(){ 
    Scanner input = new Scanner(System.in); 

    System.out.print("Enter the number of grades: "); 
    numGrades = input.nextInt(); 

有沒有一種方法可以讓我得到了用戶定義靜態數組之前進入等級的數量?

+0

是否有什麼特別的原因,你爲什麼使用數組而不是數組列表? – luanjot

回答

3

您可以定義靜態數組,而不是將其初始化:

static int[] grades; 

然後你就可以調用readGrades()方法和初始化數組grades裏面:

public static void readGrades(){ 
    Scanner input = new Scanner(System.in); 

    System.out.print("Enter the number of grades: "); 
    numGrades = input.nextInt(); 
    grades = new int[numGrades]; 
} 
0

你不能強迫到初始化一個字段,當聲明它。初始化可以在之後進行,變量可以重新初始化任意次數。所以,你只需要

static int[] grades; // declaration. The field is implicitely initialized to null. 

public static void readGrades(){ 
    Scanner input = new Scanner(System.in); 

    System.out.print("Enter the number of grades: "); 
    int numGrades = input.nextInt(); 
    grades = new int[numGrades]; // initialization 

注意,我做了numGrades一個局部變量,而不是靜態字段。沒有理由讓它成爲一個靜態的領域。等級的數量可以使用grades.length

0

當聲明等級數組時,您不必分配它。

static int[] grades; 

然後只要在閱讀成績的nr時分配它。

public static void readGrades(){ 
Scanner input = new Scanner(System.in); 

System.out.print("Enter the number of grades: "); 
numGrades = input.nextInt(); 
grades = new int[numGrades]; 
0

,因爲它是更加直觀和封裝,如果一個名爲readGrades方法也返回東西,我將實現readGrades方法這樣

public static int[] readGrades(){ 
    Scanner input = new Scanner(System.in); 

    System.out.print("Enter the number of grades: "); 
    numGrades = input.nextInt(); 
    int[] grades = new int[numGrades]; 
    // read the grades 
    return grades; 
} 

0

您可以初始化數組INT您的靜態方法:readGrades

這樣的:

public class GradeStatistics { 
    static int numGrades, sum = 0; 
    static int[] grades = null; 

public static void main(String args[]){ 
    readGrades(); 
    calcSum(); 
} 


public static void readGrades(){ 
    Scanner input = new Scanner(System.in); 

    System.out.print("Enter the number of grades: "); 
    numGrades = input.nextInt(); 
    grades = new int[numGrades]; 
    } 
} 
0

聲明你喜歡這個

static int[] grades = null; 

等級和初始化成績如下圖所示。

public static void readGrades(){ 

     numGrades = input.nextInt(); 
     grades =new int[numGrades]; 
} 
相關問題