私は、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
ループを使用して値を交換しないでください。 –