java数组随机扫描程序类

5rgfhyps  于 2021-06-30  发布在  Java
关注(0)|答案(3)|浏览(398)

我被困在我的java初学者课程,并试图让我的数组打印出与用户的输入随机选择的索引。在我目前的代码中,它只会打印出一个包含所有0的索引,比如“{0,0,0,0,0}”
提示如下:创建一个大小为6的空int数组。
创建一个名为populatearray的方法,该方法将传递一个数组,使用random类选择一个随机索引并提示用户输入一个值,将值存储在数组中。注意:生成6个随机索引号以填充数组。
创建一个名为printarray的方法,该方法使用for each增强循环打印数组的内容。
这是我的密码:

public class ChangeUp {

    public static void main(String[] args) {
        int[] array = new int[6];
        System.out.println("Please enter 6 numbers to add to a list.");
        populateArray(array);
        printArray(array);
    }

    public static void populateArray(int[] array) {
        Random r = new Random();
        Scanner input = new Scanner(System.in);
        int rArray = r.nextInt(array.length);
        int i = 0;
        for (i = rArray; i <= array.length; i++) {
            i = input.nextInt();
        }
    }

    public static void printArray(int[] array) {
        System.out.print("{" + array[0]);
        for (int i = 1; i < array.length; i++) {
            System.out.print(", " + array[i]);
        }
        System.out.println("}");
    }
}
ddrv8njm

ddrv8njm1#

不更改数组的任何值。你可以用它 array[i] = value 哪里 i 是要更改的值的索引。这是一个什么样的例子 populateArray 看起来像:

public static void populateArray(int[] array) {
    Random r = new Random();
    Scanner input = new Scanner(System.in);
    int i = r.nextInt(array.length);
    array[i] = input.nextInt();
}
eoigrqb6

eoigrqb62#

for (int i = rArray; i <= array.length; i++) {
    i = input.nextInt();
}

这是你的问题。将值赋给 i ,而不是数组的元素。
转弯:

i = input.nextInt();

分为:

array[i] = input.nextInt();
iyzzxitl

iyzzxitl3#

您没有将输入值分配给数组: array[i] = ... .
我建议您不要随机插入一个元素,而只是填充一个数组,然后洗牌它。

public class ChangeUp {

    public static void main(String... args) {
        int[] arr = new int[6];
        System.out.format("Please enter %d numbers to add to a list:\n", arr.length);
        populateArray(arr);
        printArray(arr);
    }

    public static void populateArray(int... arr) {
        Scanner scan = new Scanner(System.in);
        List<Integer> tmp = new ArrayList<>(arr.length);

        for (int i = 0; i < arr.length; i++)
            tmp.add(scan.nextInt());

        Collections.shuffle(tmp);
        int i = 0;

        for (int val : tmp)
            arr[i++] = val;
    }

    public static void printArray(int... arr) {
        System.out.println(Arrays.stream(arr)
                                 .mapToObj(String::valueOf)
                                 .collect(Collectors.joining(", ", "{", "}")));
    }
}

演示:

Please enter 6 numbers to add to a list:
1
2
3
4
5
6
{4, 3, 1, 5, 2, 6}

相关问题