我想要反转数组元素。数组的大小是用户定义的。任何人都可以修改此代码吗?
public static void main(String[] args)
{
int[] list = new int[list.length];
int temp;
Scanner input= new Scanner(System.in);
System.out.print("Enter Size");
list = input.nextInt(); // I get an error message here
System.out.println("Now the reverse is:");
for (int i = 0; i < list.length - 1; i++)
{
for(int j = list.length - 1; i > 0; j--)
{
temp = list[j];
list[j] = list[i];
list[i] = temp;
}
}
System.out.println(" " + list);
}
答案 0 :(得分:1)
有两个问题 -
1。您不能声明这样的数组 -
int[] list= new int[list.length];
你必须提供像这样的数组大小 -
int[] list= new int[10];
甚至 -
int[] list= new int[N];
其中N是整数
2。 Input.next()int返回一个整数,所以你不能用这样的数组赋值 -
list= input.nextInt();
您可以这样做 -
int sizeOfArray;
sizeOfArray = input.nextInt();
3. 您可以使用一个for循环来反转数组。请参阅此处附带的代码。
4。最后,如果代码重新编写了一些修改,那么它将是 -
import java.util.Scanner;
public class ReverseArray{
public static void main(String[] args){
int[] list = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int temp;
int sizeOfArray;
Scanner input= new Scanner(System.in);
/*Since array is initialized and populated here
* I have remove the size portion to take from user*/
//System.out.print("Enter Size");
//sizeOfArray = input.nextInt();
int lastIndex = list.length-1;
for(int i=0, j=lastIndex; i<j; i++, j--){
temp = list[j];
list[j] = list[i];
list[i] = temp;
}
System.out.println("Now the reverse is:");
for(int i=0; i<=lastIndex; i++){
System.out.print(list[i] +" ");
}
System.out.println();
}
}
答案 1 :(得分:1)
如果您真的想要低级答案,可以试试这个:
public static void main(String[] args) {
int[] list= null;
int temp;
Scanner input= new Scanner(System.in);
System.out.print("Enter Size");
int size = input.nextInt();
list = new int[size];
for(int i=0; i<size;i++) {
list[i] = i+1;
}
System.out.println("Original:");
printArray(list);
int[] reversed = new int[size];
for (int i=0; i<list.length; i++) {
reversed[i] = list[list.length - 1 - i];
}
System.out.println("Now the reverse is:");
printArray(reversed);
}
private static void printArray(int[] arrayToPrint) {
for(int i=0; i<arrayToPrint.length;i++)
{
System.out.println(arrayToPrint[i]);
}
}
当我测试它时,输出是:
Enter Size10
Original:
1
2
3
4
5
6
7
8
9
10
Now the reverse is:
10
9
8
7
6
5
4
3
2
1
否则我建议使用标准方法:Collections.reverse(Arrays.asList(array));
在您的代码行中int[] list= new int[list.length];
行是问题,因为您需要将实际大小而不是list.length
作为数组大小。