Java数组输入thorughnextInt()

时间:2014-04-04 09:35:47

标签: java inputstream

 import java.util.*;;

    public class selection {
    Scanner in=new Scanner(System.in);
    private int size;
    private int[] num=new int[size];

    selection(int size){
      this.size=size;
             }
    void enternum(){
        System.out.print("enter number"+size);
        for (int i=0;i<5;i++)
            num[i]=in.nextInt();

    }

    void sort(){
        for (int i=0;i<num.length;i++){
        int min=i;

        for(int j=i+1;j<num.length;j++){

                if(less(num[i],num[j]))
                    excg(i,j);
        }
    }

     display();

    }

    boolean less(int x,int y){
        if(x>y)
            return true;
        else
            return false;

    }

    void excg(int i,int j){

        num[i]=num[j];
        num[j]=num[i];
    }


    void display(){
        for(int i=0;i<num.length;i++)
            StdOut.println(num[i]);
    }

 public static void main (String[] arg){
        Scanner in=new Scanner(System.in);
       System.out.print("enter total num of the array");
        int size=in.nextInt();

        selection obj=new selection(size);
        obj.enternum();
        obj.sort();
    }
 }

当我们输入大小的直接值,即size = 5然后它正在工作,但是当我们进入通过键盘然后它正在给出错误aaray开箱即用。我正在通过输入 scan类使用nextInt()方法

2 个答案:

答案 0 :(得分:1)

这是因为您将数组分配为大小0.如果您在读取大小后分配它,而不是之前的,那么它将起作用。

答案 1 :(得分:1)

在构造函数中初始化数组。默认情况下,int类成员(大小)用0初始化。

private int[] num;

selection(int size){
    //this.size=size;  //not required. 
    num=new int[size];
}