【问题标题】:How do I reverse the integers in one array using another array?如何使用另一个数组反转一个数组中的整数?
【发布时间】:2011-12-07 10:22:59
【问题描述】:

我从用户那里得到了 10 个值,我想把它放到一个数组中并将它调用到一个方法中,然后调用另一个包含一个数组的方法,该数组在不使用全局变量的情况下反转第一个数组的整数.例如,用户给我值 1,2,3 等。我将其存储在第一个数组中,然后在第二个数组中输出 3,2,1。

我有部分代码从用户那里获取整数,但我不知道如何在不使用全局变量的情况下反转数组。到达values[i]处的第二种方法时代码没有运行;

这是我目前所拥有的:

public static void main(String[] args) {

    getInput();
    reverseInput();
    System.exit(0);
}  

public static void getInput() {

    Scanner keyboard = new Scanner(System.in);

    int[] values;
    values = new int[10];

    //Ask the user to enter 10 integers
    System.out.println("Please enter ten numbers.");
    for (int i = 0; i<values.length; i++) {//for loop to display the values entered
        values[i] = keyboard.nextInt();
        System.out.println("Value" + (i +1) + " is " + values[i]);
    }
}

public static void reverseInput() { 

    System.out.println("Now we are going to reverse the numbers.");
    Scanner keyboard = new Scanner(System.in);

    int [] values;
    values = new int[10];

    for (int i = (values.length -1); i>= 0; i--) {//for loop to display integers in reversed order
        values[i];
        System.out.println(values[i]);
    }
}

【问题讨论】:

    标签: java arrays


    【解决方案1】:

    首先,如果您不打算使用全局变量,那么您需要将数组从 get 输入法传递到 reverseInput 方法。像这样的:

    int[] values = getInput();
    reverseInput(values);
    

    然后要在你的 reverseInput 方法中输出数组,它必须看起来像这样:

        public static void reverseInput(int[] values) {
            for(int i = (values.length - 1); i >= 0; i--){
                System.out.println(values[i]);
            }
        }
    

    【讨论】:

    • 好的,这是有道理的,但我现在的问题是我到底在哪里做呢?当我在reverseInput方法中编译时它不会编译,所以我可以在main方法中编译吗?
    • 您需要删除您拥有“values[i];”的行
    • 我删除了那个。那是我传递数组的地方吗?
    • 您将 main 方法中的数组从 getInput 传递到 reverseInput,就像上面显示的前两行代码一样。
    【解决方案2】:

    您可以使用来自Commons LangArrayUtils.reverse

    ArrayUtils.reverse(values);
    

    【讨论】:

    • 我认为这个想法是他应该编写自己的反向函数。
    • 是的,我应该写一个反转第一个数组输入的数组。
    • 啊!对不起!好吧,如果你这样做是为了学习,我建议你先在一张纸上一步一步地做,然后你尝试编写代码。
    【解决方案3】:

    好的,您了解如何按引用顺序显示元素。正如你所写:

    for (int i = (values.length - 1); i >= 0; i--) {
        System.out.println(values[i]);
    }
    

    因此,您将如何将values 的元素(比如它有 5 个元素)放入另一个数组(称为reversedValues),以便将values[4] 放入reversedValues[0] 等等,直到values[0] 被放入reversedValues[4]

    【讨论】:

      【解决方案4】:

      使用“getInput”作为基础得到10个数字,然后在“for”循环之后,反向执行另一个for循环

        public static void reverseInput()
        {
      
          Scanner keyboard = new Scanner(System.in);
      
          int[] values;
          values = new int[10];
      
          //Ask the user to enter 10 integers
          System.out.println("Please enter ten numbers, we are going to reverse the numbers");
          for (int i = 0; i<values.length; i++) //for loop to display the values entered
          {
            values[i] = keyboard.nextInt();
          };
          int[] revValues;
          revValues = new int[10];
          for (int i = (values.length -1); i>= 0; i--) //for loop to display integers in reversed order
          {
            revValues[ revValues.length -1 -i ] = values[ i ];
            System.out.println( revValues[ i ] );
          }
      }
      

      【讨论】:

      • 但是我必须做两个单独的数组,第二个使用第一个的值。
      • 好的,我已经更新了答案,用“values”数组的值反向填充“revValues”数组。
      猜你喜欢
      • 1970-01-01
      • 2023-02-07
      • 2020-02-23
      • 2022-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多