当我把数字放在数组大小项目工作正常,但当我把int subNo给我错误

时间:2017-03-11 16:24:22

标签: java arrays

我是这个领域的新人。

package test;

import java.util.Scanner;

public class Subject {

    public static void main(String [] args){

        System.out.println("Please Enter Subject No");
        subNo =scan.nextInt();
        System.out.println("Subject No Is : " + subNo);


        for (int i = 0; i < subNo; i++) {

            System.out.println("Please Enter Subject Name " + (i + 1));
            subName[i] = scan.next();

        }
    }

    public static int subNo;

    public static String[] subName = new String [subNo] ;
    static Scanner scan = new Scanner (System.in);

}

2 个答案:

答案 0 :(得分:0)

阅读subNo后,您必须初始化数组:

public static String[] subName;//<---------------not initialize it here
static Scanner scan = new Scanner(System.in);

public static void main(String[] args) {

    System.out.println("Please Enter Subject No");
    subNo = scan.nextInt();
    subName = new String[subNo];//<------------------initialize it here
    System.out.println("Subject No Is : " + subNo);

因为当您运行程序时,您的数组将使用静态subNo进行初始化,而不是使用主要

中的新数组。

答案 1 :(得分:0)

您必须在subName变量之后定义subNo变量,因为这将在输入值后分配,例如:

public static int subNo;
static Scanner scan = new Scanner(System.in);

public static void main(String[] args) {
    System.out.println("Please Enter Subject No");
    subNo = scan.nextInt();
    System.out.println("Subject No Is : " + subNo);

    String[] subName = new String[subNo];

    for (int i = 0; i < subNo; i++) {
        System.out.println("Please Enter Subject Name " + (i + 1));
        subName[i] = scan.next();
    }
}