数组输入似乎只接受最后一次输入

时间:2017-08-23 17:10:16

标签: java arrays

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,

4 个答案:

答案 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]。

正如其他答案所示,使用不同的循环。并阅读有关每个循环的更多信息。