2013-12-23 31 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]; 
} 
相关问题