我正試圖創建一個程序,要求用戶輸入一個數字,即在數組中生成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
我知道有,我可以用一個交換技術的方法,但我想通過手動交換數字來做到這一點。任何幫助表示讚賞,謝謝。
您正在做的交換隻有一半。你把最小的值放在數組的第一個位置,但是你沒有把第一個值放回你從中取得最小值的數組中。您需要跟蹤最小值的數組索引,以便完成交換。 – stark
你不應該使用循環來交換值。 –