import java.util.Scanner;
import java.util.Arrays;
public class Sort_Array {
public static void main(String[] args) {
int a;
Scanner sc = new Scanner(System.in);
System.out.println(" Enter size of Array ");
int n = sc.nextInt();
int[] arr_num = new int[n];
System.out.println(" Enter the integers in the Array");
for(int i : arr_num)
{
arr_num[i] = sc.nextInt();
}
System.out.println(" Array before sorting ----\n");
for(int j : arr_num)
{
System.out.print(j+",");
}
System.out.println("\n");
Arrays.sort(arr_num);
System.out.println(" Array after sorting ----\n");
for(int k : arr_num)
{
System.out.print(k+",");
}
}
}
输出
Enter size of Array
2
Enter the integers in the Array
5
6
Array before sorting ----
6,0,
Array after sorting ----
0,6,
答案 0 :(得分:0)
您永远不会初始化您的数组arr_num
,因此它将充满零
int[] arr_num = new int[n];
....
for(int i : arr_num)
{
arr_num[i] = sc.nextInt();
}
然后会变成:
// Pseudocode
for(int i : {0, 0, ... , 0} )
{
arr_num[i] = sc.nextInt();
}
所以你总是写信给arr_num[0]
您可能希望改为:
for(int i = 0; i < arr_num.length; i++)
{
arr_num[i] = sc.nextInt();
}
答案 1 :(得分:0)
改变这个:
for(int i : arr_num)
{
arr_num[i] = sc.nextInt();
}
对于传统的for循环,它应该工作。
for (int i = 0; i < arr_num.length; i++) {
arr_num[i] = sc.nextInt();
}
答案 2 :(得分:0)
您正在通过foreach循环输入数组元素,但正确的方法是:
System.out.println(“在数组中输入整数”);
/*for(int i : arr_num)
{
arr_num[i] = sc.nextInt();
}*/
for(int i=0;i<n;i++){
arr_num[i] = sc.nextInt();
}
答案 3 :(得分:0)
System.out.println(" Enter size of Array ");
int n = sc.nextInt();
int[] arr_num = new int[n];
在这里,您可以看到当您传递数组大小时发生的事情,2,
arr_num初始化为0值(这是int对象的默认值)
0 0
在此之后,您已经为每个循环使用了。 其中基本上说,当你看到冒号(:)将其读作“in”时。所以基本上,你正在读取array_num中的每个int i 0 0。
for(int i : arr_num)
{
arr_num[i] = sc.nextInt(); //arr_num[0] = sc.nextInt();
//again, arr_num[0] = sc.nextInt();
}
所以这就是你得到的原因
6,0
因为您输入的 5 现在再次被 6 替换为arr_num [0]。而第二个0仍然停留在arr_num [1]。
正如其他答案所示,使用不同的循环。并阅读有关每个循环的更多信息。