【问题标题】:Why is my code not returning what I want it to do? [duplicate]为什么我的代码没有返回我想要它做的事情? [复制]
【发布时间】:2019-11-17 13:46:11
【问题描述】:

我的代码返回乱码(至少对我而言),我不知道如何让它工作。

我尝试了一些不同的返回配置,但都没有按照我想要的方式工作。

class Main {
  public static void main(String[] args) {
    int[] reversing= {1,5,3,14,5,26,7,8,9,10,928,0};
      System.out.println(reverse(reversing));
  }
  public static int[] reverse(int[] nums){
    for(int i=0;i<nums.length;i++){
      nums[i]=nums[nums.length-1];
    }
    return nums;
  }
}

代码应该采用整数数组并反转数字,但它只是返回 [I@5acf9800

【问题讨论】:

  • 您在迭代 nums 数组时对其进行了修改。
  • 错字在nums[nums.length-1];相反,它应该是nums[nums.length- 1 - i]

标签: java arrays loops return


【解决方案1】:

System.out.println() 打印 int[] 数组对象的哈希码,而不是数组的元素。

您需要遍历数组中的打印语句。但除此之外,您的方法实际上并没有反转数组。

public class Reverser {
public static void main(String[] args) {
    int[] reversing = { 1, 5, 3, 14, 5, 26, 7, 8, 9, 10, 928, 0 };
    for (int i : reverse(reversing)) System.out.println(i);
}

public static int[] reverse(int[] nums) {
    int [] reversed = new int[nums.length];
    int reverseIndex = nums.length - 1;
    for (int i = 0; i < nums.length; i++) {
        reversed[reverseIndex--] = nums[i];
    }
    return reversed;
}

}

【讨论】:

  • 也可以使用Arrays.toString(reverse(reversing))
  • 同意,尽可能使用辅助类。
猜你喜欢
  • 2015-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多