java - 如何在两个数组值之间交换?
问题描述
当用户输入的数字 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;
}
}
解决方案
我试过这个,找不到任何问题。为了使调试更容易,我建议您使用随机数填充您的数组。
创建一个实例Random
Random rand = new Random();
并将输出分配给您的数组变量。
arr = rand.ints(10,1,15).toArray();
论据rand.ints
是。
- 10 - 元素的数量
- 1 - 数字范围的开始
- 15 - 范围的结尾(不包括该数字)
因此该调用将生成从 1 到 14 的 10 个数字(包括 1 到 14)。
任何问题的一种可能性可能是数组中的重复数字并找到要交换的正确数字。但我无法重现该错误。
推荐阅读
- python - 在查询返回的索引处更新数据框
- python - Python pygments 词法分析器状态保存
- c# - 使用 JSON 对 WCF 服务进行分页
- csv - JMeter:为 Random CSV 安装 Blazemeter 插件后,Jmeter 不允许右键单击“测试计划”
- c# - TextBox 上的 StringFormat 阻止输入
- jenkins - Jenkins Pipeline 上的动态参数取决于分支
- reactjs - Gatsby 如何在 React 组件和之前生成的静态 HTML 内容之间共享 React 标头
- javascript - Office.js 选择文本并将其替换为 ContentControl
- angularjs - 正则表达式不允许特定域电子邮件 id 角度 js
- c++ - 擦除前的 C++ 复制向量范围