我有一个非常简单的程序来反转一个整数数组,但每次我尝试运行它时,它只是忽略了第二个循环,反向应该发生并传递它或者它可能有些麻烦。
package chapter_1;
import java.util.*;
public class Reverse_array {
public static void main(String[] args) {
Scanner keybd = new Scanner(System.in);
int[] arr = new int[10];
for (int i = 0; i < arr.length; i++) {
System.out.println("[%" + i + "]=");
arr[i] = keybd.nextInt();
}
for (int i = 0; i < arr.length; i++) {
int temp = arr[i];
arr[i] = arr[10 - 1 - i];
arr[10 - 1 - i] = temp;
}
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]);
}
}
}
答案 0 :(得分:0)
它不会忽略第二个循环,它应该是
for (int i = 0; i < arr.length/2; i++) {
int temp = arr[i];
arr[i] = arr[10 - 1 - i];
arr[10 - 1 - i] = temp;
}
如果你从0迭代到arr.length那么它会反转你的数组两次,这最终会让你回到原始数组,
答案 1 :(得分:0)
这是问题
for (int i = 0; i < arr.length; i++) {
int temp = arr[i];
arr[i] = arr[10 - 1 - i];
arr[10 - 1 - i] = temp;
}
你做两次数组元素交换
相反,请使用
for (int i = 0; i < arr.length / 2; i++) {
int temp = arr[i];
arr[i] = arr[arr.length - 1 - i];
arr[arr.length - 1 - i] = temp;
}
答案 2 :(得分:0)
将arr.length更改为arr.length / 2。现在你要反转它两次。
答案 3 :(得分:0)
你应该浏览你的数组,直到他的一半不反转两次( - =&gt; +)。
始终尝试使用数组大小进行浏览。
for(int i = 0; i&lt; arr.length; i ++)
而不是
for(int i = 0; i&lt; 10; i ++)
它更通用和正确。您可以添加变量以保存数组大小。 所以你的代码将:
package chapter_1;
import java.util.*;
public class Reverse_array {
public static void main(String[] args) {
Scanner keybd = new Scanner(System.in);
int arrayLenght = 10;
int[] arr = new int[arrayLenght];
for (int i = 0; i < arrayLenght; i++) {
System.out.print("%[" + i + "]= ");
arr[i] = keybd.nextInt();
}
for (int i = 0; i < arrayLenght / 2; i++) {
int temp = arr[i];
arr[i] = arr[arrayLenght - 1 - i];
arr[arrayLenght - 1 - i] = temp;
}
for (int i = 0; i < arrayLenght; i++) {
System.out.println(arr[i]);
}
}
}
答案 4 :(得分:0)
我看到其他人在我写作时给了你解决方案。
让我给你一些建议: - 无论你在尝试什么,magane保持开发循环(错误,修改,试验和从开始再次)尽可能短。
手工插入数据很少是一个不错的选择
所以,在这种情况下:最好避免第一个循环并输入类似:int [] arr = {5,6,7,8,8,1,8,9,1,9};
- 如果有疑问请用打印填充代码以便您可以按照算法执行的操作,下一步将学会使用调试器,但第一步是打印指令
- 如果您想学习,请在尝试其他人帮助之前尽力(取决于您)