如何创建一个由用户输入定义的长度的静态数组?

时间:2013-12-23 08:26:25

标签: java arrays variables static

我有一个程序,用户输入多个等级并存储到数组中,然后由程序用来计算各种值。

我正在使用多种方法,所以我想定义一个所有方法都可以引用的静态数组,并保持等级。但是我希望它的长度等于输入的等级数。

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();

在定义静态数组之前,有没有办法让用户输入成绩数?

6 个答案:

答案 0 :(得分: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];
}

答案 1 :(得分: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可以获得成绩数量。

答案 2 :(得分: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];

答案 3 :(得分:0)

我会像这样实现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;
}

因为如果名为readGrades的方法也返回某些内容,它会更直观和封装。

答案 4 :(得分:0)

你可以在静态方法中初始化数组: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];
   }
}

答案 5 :(得分:0)

声明你这样的成绩

static int[] grades = null;

并初始化如下的等级。

public static void readGrades(){

       numGrades = input.nextInt();
       grades  =new int[numGrades];
}