我正在尝试使用下面显示的代码反转数组,但没有成功。该程序的输出为7,0,0
,而不是7,1,2
。
代码:
import java.util.Arrays;
public class ReverseArray
{
public static void main(String[] args)
{
int[] data = {1, 2, 7};
int[] dataR = reverseArray(data);
System.out.println("Original Array: " + Arrays.toString(data));
System.out.println("Reverse Array: " + Arrays.toString(dataR));
}
public static int[] reverseArray(int[] data)
{
int[] reversedData = new int[data.length];
int i;
for(i=0; i < data.length; i++);
{
reversedData[i] = data[(data.length - i -1)];
}
return reversedData;
}
}
所有帮助表示感谢,谢谢。
答案 0 :(得分:8)
这是你的问题:
for(i=0; i < data.length; i++);
删除;
。你编写它的方式,首先是一个循环,将i
计算到data.length
,然后是一个范围内的块,它试图只访问reversedData[data.length]
一次。那不会飞。
有趣的是:最初,我们当中没有人看到问题所在;在IDE中使用格式化规则会很快告诉你什么是错的:你会发现你的代码在按照你习惯的规则进行格式化时看起来不像它。
答案 1 :(得分:0)
您应该使用临时变量来交换数组中的值。例如:
for(int i = 0; i < validData.length / 2; i++)
{
int temp = validData[i];
validData[i] = validData[validData.length - i - 1];
validData[validData.length - i - 1] = temp;
}
或
ArrayUtils.reverse(int[] array)
所有问题都在this问题中进行了描述。
答案 2 :(得分:0)
好的捕获,G。巴赫。我也不确定你问题的第一部分。看起来原始数组是1, 2, 7
。与此相反的是7, 2, 1
而不是7, 1, 2
?
也就是说,看起来每次访问data.length
可能会减慢速度。我可能会创建一个局部变量:
public static int[] reverseArray(int[] data)
{
int arr_length = data.length
int[] reversedData = new int[arr_length];
int j = arr_length - 1;
for(int i=0; i < arr_length; i++);
{
reversedData[i] = data[j--];
}
return reversedData;
}
注意j
在被访问后如何自动递减,保持整洁。此外,我们已将数组的长度保存到局部变量中,因此访问效率更高。
答案 3 :(得分:0)
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
public class Solution {
public static void main(String[] args) {
/* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */
Scanner in=new Scanner(System.in);
int size=in.nextInt();
int array[]=new int[size];
for(int i=0;i<size;i++){
array[i]=in.nextInt();
}
for(int i=size-1;i>=0;i--)
{
System.out.print(array[i]+" ");
}
}
}
答案 4 :(得分:0)
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
public class ReverseArray
{
public static void main(String[] args)
{
System.out.println("Enter the array Size");
Scanner in=new Scanner(System.in);
int size=in.nextInt();
System.out.println("Enter the array Elements");
int array[]=new int[size];
for(int i=0;i<size;i++){
array[i]=in.nextInt();
}
System.out.println("reverse of entered are given below for Size : " +size );
for(int i=size-1;i>=0;i--)
{
System.out.print(array[i]+" ");
}
}
}
答案 5 :(得分:0)
输入:
输入要反转的值数 7
1 2 3 4 6 7 8
输出: 反转数组:[8,2,3,4,6,7,1]
反向数组:[8、7、3、4、6、2、1]
反向数组:[8、7、6、4、3、2、1]
编码:
public class Test{
public static void main(String[] args){
System.out.println("Enter the number of values to reverse");
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int num[] = new int[n];
for(int i=0; i < num.length; i++)
num[i] = sc.nextInt();
reverseArray(num, n-1);
}
private static void reverseArray(int num[], int end) {
int start = 0;
int temp;
while(start < end) {
temp = num[start];
num[start] = num[end];
num[end] = temp;
start++;
end--;
System.out.println("Reversed Array :"+ Arrays.toString(num));
}
}
}