好吧,我有我的代码,一切都很好,但我不明白为什么我的输出给了我两个反转
而不是一个
。最后一个是正确的,但反转的第一个输出有点困惑。
public class ICE17 {
static //Examine the following program:
class ArrayProblems {
public static void main(String[] args) {
int[] val = { 0, 1, 2, 3 };
int sum = 0; //write code here
for (int i = 0; i < val.length; i++) {
sum += val[i];
}
System.out.println("Sum of all numbers = " + sum);
reverse();
}
public static void reverse() {
int[] val = { 0, 1, 2, 3 };
//int temp=0;
System.out.println("Original Array: " + val[0] + " " + val[1] + " " + val[2] + " " + val[3]);
// write code here to reverse the order of the numbers in the array
for (int i = 0; i < val.length / 2; i++) {
int temp = val[i];
val[i] = val[val.length - 1 - i];
val[val.length - 1 - i] = temp;
System.out.println("Reversed Array: " + val[0] + " " + val[1] + " " + val[2] + " " + val[3]);
}
}
}
}
最佳答案
埃里克(Erick)对于解决打印问题的回答是正确的。您正在 for 循环中打印数组,因此它将打印它的 length/2 次。
您的反向方法的另一件事是创建一个本地数组并反转它。如果您确实想反转在 main 方法中创建的数组,请编写一个函数,该函数将接受数组作为输入,如下所示:
public class ICE17 {
public static void reverseArray(int[] val) {
for (int i = 0; i < val.length / 2; i++) {
int temp = val[i];
val[i] = val[val.length - 1 - i];
val[val.length - 1 - i] = temp;
}
}
public static void printArray(int[] val) {
for(int i: val) {
System.out.print(i + " ");
}
System.out.println();
}
public static void main(String[] args) {
int arr[] = { 0, 1, 2, 3 };
System.out.println("Array before reverse");
printArray(arr);
reverseArray(arr);
System.out.println("Array after reverse");
printArray(arr);
}
}
关于java - 我的反转数组的输出出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30659167/