我编写了反转整数数组的代码。代码如下所示:
public class ReverseArray {
public static void main(String[] args) {
try {
int[] arr = new int[5];
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
arr[3] = 4;
arr[4] = 5;
for (int i = 0; i <= arr.length/2; i++)
int temp = arr[0];
arr[0] = arr[arr.length - i - 1];
arr[arr.length - i - 1] = temp;
}
System.out.println(arr);
} catch (Exception e) {
System.out.println(e);
}
}
}
但它并没有扭转数组......我正在接受输出。
[I@3bad086a
我认为我的逻辑没有任何问题。
答案 0 :(得分:7)
即将引用打印到数组中 如果一次打印出一个元素,你会看到反转的数组。
编辑: 还有两点。
arr[0]
时,您正在使用arr[i]
。 arr.length / 2
。由于这是一个家庭作业问题,我留给你找出原因;尝试打印中间结果并解释它们。答案 1 :(得分:6)
一个好东西:
System.out.println(Arrays.toString(arr));
答案 2 :(得分:3)
你需要遍历数组来打印它
for (int i = 0; i <arr.length; i++) {
System.out.println(arr[i]);
}
首先,我会让上面的代码保留(这是错误的(ArrayIndexOutOfBoundsException
),现在我相信你对我投票不错了)
public class ReverseArray {
public static void main(String[] args) {
try {
int[] arr = new int[5];
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
arr[3] = 4;
arr[4] = 5;
for (int i = 0; i <= arr.length/2; i++){
int temp = arr[i];
arr[i] = arr[arr.length - i - 1];
arr[arr.length - i - 1] = temp;
}
for (int i = 0; i <= arr.length -1 ; i++){
System.out.println(arr[i]);
}
}
catch (Exception e) {
System.out.println(e);
}
}
}
目前,我将提出一些简单的建议
答案 3 :(得分:3)
您应该使用Arrays.toString(arr)
。
数组没有toString()
的具体实现,因此调用它会导致Object的默认toString
实现。在Java5中,为数组添加了toString
功能,作为Arrays类中的静态方法。我想由于向后兼容性的考虑,它没有被直接添加到数组中。
顺便说一下,你的代码中有一个小错误。我相信你想交换索引length-i-1
和i
(不是0
)中的值。
答案 4 :(得分:1)
您需要打印数组的内容而不是数组本身。尝试使用循环迭代数组并一次打印一个int。
答案 5 :(得分:1)
使用以下内容打印数组
for (int i = 0; i <arr.length; i++) {
System.out.println(arr[i]);
}
而不是
System.out.println(arr);
答案 6 :(得分:1)
只做
for (int i = 0; i <arr.length; i++) {
System.out.println(arr[i]);
}
答案 7 :(得分:1)
您正在打印
System.out.println(arr);
这将打印变量arr的内存位置。
你应该试试
for(int i=0;i<arr.length;i++)
System.out.println(arr[i]);
答案 8 :(得分:1)
关于打印阵列,以前的几个答案是正确的。但是,您的代码仍然无效。您需要在循环中将arr[0]
替换为arr[i]
。
答案 9 :(得分:0)
在Java中反转数组的一些最简单的方法。
package reversearray;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
final public class Main
{
private Object reverseArray(Object[]arr)[]
{
List<Object>list=Arrays.asList(arr);
Collections.reverse(list);
return(list.toArray());
}
public static void main(String... args)
{
Object[] arr ={1, 2, 3, 4, 5};
arr=new Main().reverseArray(arr);
int newArray[]=new int[arr.length]; //Array of your desired type.
for(int i=0;i<arr.length;i++)
{
newArray[i]=Integer.valueOf(arr[i].toString());
}
for(int i=0;i<arr.length;i++)
{
System.out.println(newArray[i]);
}
}
}
您只需使用Commons.Lang,如下所示。
ArrayUtils.reverse(int[] arr)
使用guava:
Collections.reverse(Ints.asList(arr));
答案 10 :(得分:-1)
来自我对C的有限召回
for i = (length( array ) -1 ) to 0
{ print( array( i ) ; i-- }
注意:您计算的是ELEMENTS而不是BYTES 另外:你从长度中减去1,因为你倒数到零而不是1