3

我需要一些帮助来完成我被分配的这项任务。不要求任何人做我的工作,但老实说,我真的坚持如何做到这一点。

我应该编写一个程序,提示用户输入 10 个数字,然后让它以相反的顺序写入所有数字。

示例:输入 10 个数字:23 89 21 55 67 89 99 13 98 78 逆序:78 98 13 99 89 67 55 21 89 23

到目前为止,我所拥有的只是如何获取用户输入。如果有人能把我推向正确的方向,我将不胜感激!

import java.util.*;

public class ReverseNumbers
{
public static void main(String[] args)
  {

    Scanner keyboard = new Scanner(System.in);

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

    //Ask the user to enter 10 integers
    System.out.println("Please enter 10 numbers:");
    for (int i = 0; i< values.length; i++) 
    {
      values[i] = keyboard.nextInt();
    }
    int[] reverseNums;
    reverseNums = new int[10];
    for (int i = (values.length -1); i>= 0; i--) 
    {
      reverseNums[ reverseNums.length -1 -i ] = values[ i ];
      System.out.println( reverseNums[ i ] );
    } 
 }
}
4

6 回答 6

5

如果您不想存储反转的值

    for (int i = (values.length -1); i>= 0; i--) 
    {       
      System.out.println( values[ i ] );
    } 
于 2013-04-11T03:02:06.280 回答
3

您的代码看起来很适合将输入读入values. 现在您可以反向循环该数组并打印值:

for (int i = 0; i < values.length; i++)
  System.out.println(values[values.length - i - 1]);

想一想,从 10 - 0 - 1 = 9 开始打印。最后,i == 0从10 - 9 - 1 = 0 开始打印。values[9]i == 9values[0]

如您所见,不需要额外的reverseNums数组。

PS:如果你愿意,你可以合并int[] values;values = new int[10];一行:int[] values = new int[10];

于 2013-04-11T03:20:36.877 回答
0

我认为您的代码正在正确创建数组。您只是按原始顺序打印出数字,因为您的第二个 for 循环正在向后迭代它们。您可以通过在最后一个循环之后添加以下语句来查看正确的结果:

System.out.println(java.util.Arrays.toString(reverseNums));

您还可以仅通过一次迭代执行完整的任务:

Scanner keyboard = new Scanner(System.in);

int[] reverseNums= new int[10];
System.out.println("Please enter 10 numbers:");
for (int i = 0; i< values.length; i++) {
  reverseNums[values.length -1 - i] = keyboard.nextInt();
}
System.out.println(java.util.Arrays.toString(reverseNums));
于 2013-04-11T06:47:50.937 回答
0

使用 将整行作为字符串读取Scanner.nextLine(),然后使用 将其拆分为数组String.split(" ");。在此之后,您可以简单地从数组的末尾向后迭代并打印数字。

于 2013-04-11T02:58:45.933 回答
0

如果这不是作业,那么为什么不尝试使用http://commons.apache.org/proper/commons-lang/

ArrayUtils.reverse(int[] array)
于 2013-04-11T03:00:18.063 回答
-1

要反转它:

for (int i = 0; i < values.length; i++)
    reverseNums[values.length - i - 1] = values[i];
于 2013-04-11T03:02:58.723 回答