gpt4 book ai didi

java - Java 中的随机打乱整数数组

转载 作者:行者123 更新时间:2023-11-30 07:03:33 26 4
gpt4 key购买 nike

这是我第一次使用数组。我应该提示用户输入 5 个数组值,然后以随机顺序显示它们。我很困惑,因为这是我第一次这样做。无论如何,我的代码在这里。

import java.util.*;
public class Test {
public static void main(String[] args) {
int myArray[] = new int[5];
System.out.println("Please enter 5 numbers: ");
Scanner input = new Scanner(System.in);
for (int i = 0; i < myArray.length - 1; i--) {
int j = (int) (Math.random() * (i + 1));
myArray[i] = input.nextInt();


System.out.println("The numbers are: ");

System.out.println(myArray[0]);
System.out.println(myArray[1]);
System.out.println(myArray[2]);
System.out.println(myArray[3]);
System.out.println(myArray[4]);


int temp = myArray[i];
myArray[i] = myArray[j];
myArray[j] = temp;

System.out.println("The numbers, shuffled, are: ");
System.out.println(myArray[0]);
System.out.println(myArray[1]);
System.out.println(myArray[2]);
System.out.println(myArray[3]);
System.out.println(myArray[4]);
}
}
}

感谢大家的支持。

最佳答案

A - 说明

假设您按 {'1','2','3','4','5'} 的顺序获取输入值。洗牌是随机破坏顺序,因此您必须随机更改元素的位置。

在演示代码中,

  • swapArrayElement 交换位置作为参数传递的元素。

  • getRandom 返回 0 和作为参数传递给该方法的 range 之间的随机值。

  • shuffleArray 通过随机更改元素的位置来打乱数组。请注意,还有一个额外的 boolean isShuffled[] 数组,它是 boolean 值,因为我们必须跟踪位置,无论它们是否被打乱。

  • isArrayShuffled 方法,检查所有位置是否已打乱。

B - 演示代码

import java.util.Scanner;

public class Test {

public static final int ARRAY_LENGTH = 5;

public static void main(String[] args) {
int myArray[] = new int[ARRAY_LENGTH];



Scanner input = new Scanner(System.in);
System.out.println("Please enter 5 numbers: ");

for(int i = 0; i < myArray.length; i++)
myArray[i] = input.nextInt();

System.out.println("\nThe numbers are: ");
printIntArray(myArray);

shuffleArray(myArray);
System.out.println("\nThe numbers, shuffled, are: ");
printIntArray(myArray);

input.close(); // no memory leaks!
}

// method for printing array
public static void printIntArray(int[] array) {
for(int i = 0; i < array.length; i++)
System.out.printf("%2d ", array[i]);
System.out.printf("%n"); // use %n for os-agnostic new-line
}

// method for shuffling array
public static void shuffleArray(int[] array) {
int range = array.length;
boolean isShuffled[] = new boolean[range]; // store which positions are shuffled

while(!isArrayShuffled(isShuffled)) {
int positionSrc = getRandom(range);
int positionDst = getRandom(range);

swapArrayElement(array, positionSrc, positionDst);
isShuffled[positionSrc] = true;
isShuffled[positionDst] = true;
}

}

public static int getRandom(int maxRange) {
return (int)(Math.random()*maxRange);
}

public static void swapArrayElement(int[] array, int i, int j) {
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}

public static boolean isArrayShuffled(boolean[] isShuffled) {
for(int i = 0; i < isShuffled.length; i++)
if(isShuffled[i] == false)
return false;

return true;
}
}

C - 演示输出

Please enter 5 numbers: 
1 2 3 4 5

The numbers are:
1 2 3 4 5

The numbers, shuffled, are:
4 2 5 1 3

关于java - Java 中的随机打乱整数数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40494624/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com