【问题标题】:trouble creating a method that takes as an input an array of integers and return the reverse array创建将整数数组作为输入并返回反向数组的方法时遇到问题
【发布时间】:2014-12-30 20:58:38
【问题描述】:

我需要帮助编写此代码,以便我可以反转整数数组并返回它?有人可以帮忙吗?

public class Quesitons {

    public static void main(String[] args) {

        int[] numbers = {1, 2, 3, 4, 5, 6, 8};

        int[] a = reverseArray(numbers);
        System.out.println(a);

    }

    public static int[] reverseArray(int[] numbers) {

        int [] newArray= new int [numbers.length];
        int temp;
        int left = numbers[0];
        int right = numbers.length; 
        int  mid = left+right/2;
        for (int i=0; i<mid;i++){
            temp = left;
            left= right;
            right= temp;

            right= right -1;
            left= left+1;

            left= newArray[0];
            right=newArray.length-1;
        }
        return newArray;
    }
}

【问题讨论】:

  • 如果您解释您正在使用的特定语言,它可能会帮助您获得帮助。
  • 您上面的代码到底有什么问题?
  • 好吧,当我编译或运行它时,我没有以相反的顺序得到数字,我认为这可能是因为我没有将数字保存在新数组中?

标签: arrays methods return reverse


【解决方案1】:

一个稍微不同的for循环来反转数组:

for (int i = numbers.length -1, j = 0; i >= 0; i--, j++)
{
   newArray[i] = numbers[j];
}

for 循环中,您可以声明多个以逗号分隔的变量。唯一的问题是您只能有一个转义子句(即i &gt;= 0j &lt; array.length

基本上,您正在做的是倒数倒数数组,同时数数原始数组。如果您考虑一下,实现相当简单。

【讨论】:

    【解决方案2】:

    与编程中的大多数任务一样,最简单的方法是完全不做任何工作。虽然没有用于数组的reverse 方法,但Collections 中有一个反向方法。因此,如果您要使用 List 而不是数组,则只需调用 yourList.reverse(),所有工作都会为您完成。

    如果您想要或需要使用数组,这里有一个方法将返回传递给它的 int[] 的反向:

    public static int[] reverseArray(int[] input)
    {
        int[] reversedArray = new int[input.length];
    
        int j = 0;
        for (int i = input.length - 1; i >= 0; i--)
        {
            reversedArray[j] = input[i];
            j++;
        }
    
       return reversedArray;
    }
    

    总结一下它的作用:首先,它创建一个与输入数组长度相同的新数组。然后,在从输入数组的最后一个元素移动到第一个元素的 for 循环中,它将这些元素中的每一个分配给从第一个到最后一个的新数组的索引。因此,输入数组的最后一个索引分配给新数组的第一个索引,倒数第二个元素分配给第二个索引,等等。

    【讨论】:

    • 很好,但是当我运行它时,我得到了这个 [I@15db9742
    • @Dee 您在 ideone 中运行它,不是吗?如果你打印数组的每个元素,你会发现结果就是你想要的。 Ideone 似乎不支持打印数组。
    • 我在 netbeans 上运行它,但我不知道它为什么这样做,哈哈?很奇怪
    • @Dee 我基本上可以保证它发生的原因是因为你只是打电话给System.out.println($your_array$)。尝试遍历reverseArray 的结果,如下所示:for (int q : reverseArray(new int[] { 1, 2, 3, 4, 5}) { System.out.println(q); }
    【解决方案3】:

    试试这个

    public static int[] reverseArray(int[] numbers) {
    
        int[] newArray= new int[numbers.length];
        int counter = 0 ;
        for(int i = numbers.length - 1; i >= 0; i--)
        {
            newArray[counter] = numbers[i];
            counter++;
        }
        return newArray;
    }
    

    这样调用查看结果:

    int[] numbers = {1, 2, 3, 4, 5, 6, 8};
    int[] a = reverseArray(numbers);
    for(int i = 0; i < a.length; i++)
       Console.write(a[i]);
    

    我还没有测试过,但肯定可以工作。

    【讨论】:

    • 对,我的意思是它可以工作,但是当它运行时,我得到了这个 [I@15db9742 ?你能解释一下我为什么会这样吗?请
    • 您可以发布您调用的参数值,以及您在哪里看到该值?
    猜你喜欢
    • 2015-02-06
    • 1970-01-01
    • 1970-01-01
    • 2011-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 2020-07-09
    相关资源
    最近更新 更多