如果用户输入的数字1小于数字2,则交换无效, 但是当数字1大于数字2时,它起作用。我不明白为什么会这样。我将不胜感激一些建议或帮助。
package javaapplication36;
public class JavaApplication36 {
static Scanner s = new Scanner(System.in);
// main method
public static void main(String[] args) {
int[] arr = new int[10];
input(arr);
System.out.println("Enter n1 :");
int n1 = s.nextInt();
System.out.println("Enter n2 : ");
int n2 = s.nextInt();
display(arr);
int temp = 0;
int index_a = index(arr, n1);
int index_b = index(arr, n2);
if (index(arr, n1) != -1 && index(arr, n2) != -1) {
temp = arr[index_a];
arr[index_a] = arr[index_b];
arr[index_b] = temp;
}
for (int i : arr) {
System.out.print(i + " ");
}
System.out.println();
}
public static void display(int[] arr) {
for (int i : arr) {
System.out.print(i + " ");
}
System.out.println();
}
public static void input(int[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.println("Enter number : " + (i + 1));
arr[i] = s.nextInt();
}
}
public static int index(int[] arr, int n) {
for (int i = 0; i < arr.length; i++) {
if (arr[i] == n)
return i;
}
return -1;
}
}
答案 0 :(得分:1)
我尝试了此操作,但未发现任何错误。为了简化调试过程,建议您使用随机数填充数组。
创建Random
Random rand = new Random();
并将输出分配给您的数组变量。
arr = rand.ints(10,1,15).toArray();
rand.ints
的参数是
该呼叫将生成10个数字(从1到14)(包括1到14)。
任何问题的一种可能是在阵列中重复数字并找到要交换的正确数字。但是我无法重现该错误。