我正在尝试反转数组;我输入了数组的长度,而不是所有的值。在那之后,我试着反转它,就像这样:"for construction“中的ai = aal -i- for(int = o;i< al;i++);
我到底做错了什么?完整的代码:
package com.company;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner s1 = new Scanner(System.in);
int al = s1.nextInt();
int a[] = new int[al];
for (int i = 0; i < al; i++) {
a[i] = s1.nextInt();
}
for(int i = 0; i < al; i++) {
a[i] = a[al - i];
}
for(int i = 0; i < al; i++) {
System.out.println(a[i]);
}
}
}
发布于 2018-09-25 06:05:31
您的程序的问题描述:
for(int i = 0; i < al; i++) {
//let al=5, so index of a will be 0..4
//so for first iteration i=0
//so a[5-0] i.e: a[5] where 5 is index out of bound
a[i] = a[al - i];
}
问题的解决方案,但此逻辑不会反转您的数组数据:
for(int i = 0,j=al-1; i < al; i++,j--) {
a[i] = a[j];
}
为了反转您的数组数据,您必须像这样使用:
for (int i = 0, j = al - 1; i < j; i++, j--) {
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
所以,整个解决方案,
package com.company;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner s1 = new Scanner(System.in);
int al = s1.nextInt();
int a[] = new int[al];
for (int i = 0; i < al; i++) {
a[i] = s1.nextInt();
}
for (int i = 0, j = al - 1; i < j; i++, j--) {
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
for (int i = 0; i < al; i++) {
System.out.println(a[i]);
}
}
}
https://stackoverflow.com/questions/52487639
复制相似问题