我正在尝试创建一个程序,要求用户输入一个数字,该数字表示将在数组中生成多少个 1-100 之间的随机数。然后我希望最大的数字与最后一个数字交换,最小的数字与第一个数字交换。到目前为止,这是我的代码:
import java.util.Scanner;
import java.util.Random;
public class smallbig
{
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
Random randomGenerator = new Random();
int num = scan.nextInt();
int[] myArray = new int[num];
for (int i = 0; i < myArray.length; ++i) {
int randomInt = randomGenerator.nextInt(100);
myArray[i] = randomInt;
}
int smallest = myArray[0];
int largest = myArray[0];
for (int i = 1; i < myArray.length; i++) {
if (myArray[i] > largest) {
largest = myArray[i];
}
if (myArray[i] < smallest) {
smallest = myArray[i];
}
}
for (int j = 1; j < myArray.length; j++) {
int first = myArray[0];
myArray[0] = smallest;
smallest = first;
int temp = largest;
int last = myArray.length;
myArray[last - 1] = largest;
temp = myArray[last - 1];
System.out.print(myArray[j] + " ");
}
}
}
我似乎无法正确交换数字。我创建了一个循环,它从生成的数字中确定最小和最大的数字,并将这些数字存储起来。然后我创建了一个循环来执行必要的交换,但我似乎无法让它正常工作。它适用于将最大数字与最后一个数字交换,但大多数时候(并非总是)输出的最后一个数字也存在于数组中的其他地方。这就是我的意思:
input: 10
output: 62 48 34 0 91 14 64 60 91
我知道有一种我可以使用的交换器方法,但我想通过手动交换数字来实现。感谢任何帮助,谢谢。
最佳答案
你犯了一个简单的错误,当你执行交换时你的循环应该从'0'开始
for (int j = 0; j < myArray.length; j++) {
int first = myArray[0];
myArray[0] = smallest;
smallest = first;
int temp = largest;
int last = myArray.length;
myArray[last - 1] = largest;
temp = myArray[last - 1];
System.out.print(myArray[j] + " ");
关于java - 如何交换数组中最大的数字和最后一个数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40773229/