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()方法
答案 0 :(得分:1)
这是因为您将数组分配为大小0.如果您在读取大小后分配它,而不是之前的,那么它将起作用。
答案 1 :(得分:1)
在构造函数中初始化数组。默认情况下,int类成员(大小)用0初始化。
private int[] num;
selection(int size){
//this.size=size; //not required.
num=new int[size];
}