import java.util.Arrays;
public class Swap
{
public static void main(String args[])
{
Scanner console = new Scanner(System.in);
System.out.print("What is the size of your array? ");
int myArray = console.nextInt();
int[] size = new int[myArray];
int sum = 0;
int max = 0;
int min = 100;
int temp = 0;
for (int i = 0; i < size.length; i )
{
System.out.print("Array index " (i) ": ");
size[i] = console.nextInt();
sum = size[i];
if (size[i] > max) max = size [i];
if (size[i] < min) min = size [i];
}
System.out.println ("\nmaximum value is: " max);
System.out.println ("\nminimum value is: " min);
System.out.println (Arrays.toString(size));
temp = size[max];
size[max] = size[min];
size[min] = temp;
System.out.println (Arrays.toString(size));
}
}
我在交換陣列中的最小值和最大值時遇到問題,我能夠很好地找到這些值,我什至找到了一種與 temp 變數交換的方法,但我無法將其轉換為陣列。
uj5u.com熱心網友回復:
您使用 max 和 min 作為陣列索引來交換值。這是不正確的。相反,您必須保留 min 和 max 索引,并使用它們在陣列中交換。我建議你像這樣完成你的代碼:
import java.util.Arrays;
public class Swap
{
public static void main(String args[])
{
Scanner console = new Scanner(System.in);
System.out.print("What is the size of your array? ");
int myArray = console.nextInt();
int[] size = new int[myArray];
int sum = 0;
int max = 0;
int min = 100;
int maxIndex=0;
int minIndex=0;
int temp = 0;
for (int i = 0; i < size.length; i )
{
System.out.print("Array index " (i) ": ");
size[i] = console.nextInt();
sum = size[i];
if (size[i] > max){
max = size [i];
maxIndex=i;
}
if (size[i] < min) {
min = size [i];
minIndex=i;
}
}
System.out.println ("\nmaximum value is: " max);
System.out.println ("\nminimum value is: " min);
System.out.println (Arrays.toString(size));
temp = size[maxIndex];
size[maxIndex] = size[minIndex];
size[minIndex] = temp;
System.out.println (Arrays.toString(size));
}
}
uj5u.com熱心網友回復:
只有最大值和最小值的部分。
int max = Integer.MIN_VALUE;
int min = Integer.MAX_VALUE;
int iAtMax = -1;
int iAtMin = -1;
for (int i = 0; i < size.length; i ) {
if (iAtMax == -1 || max < size[i]) {
iAtMax = i;
max = size[i];
}
if (min <= size[i]) {
iAtMin = i;
min = size[i];
}
}
if (iAtMax != -1) {
int temp = size[iAtMax];
size[iAtMax] = size[iAtMin];
size[iAtMin] = temp;
}
您可以初始化max,min以便回圈中的更新始終更新。然后你必須使用<= maxresp。>= min更新索引。(見min上文)或者您可以檢查是否已經存在最大值和最小值。
如果陣列為空(或大小為 1),則您不能(分別不需要)交換。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/434493.html
