需要帮助以相反的顺序编写数字。

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 ] );
    } 
 }
}

看起来你走在了正确的轨道上,它出了什么问题? - drew moore
你走在正确的道路上,但是想一想:为什么需要另一个数组来存储反转后的值呢?为什么不直接倒序遍历你的 values 数组,并在遍历时打印出来呢? - Yuushi
1
只需将此行注释掉 reverseNums[reverseNums.length -1 -i] = values[i]; 并打印 values[i]。 - Abi
6个回答

5

如果您不想存储反转后的值

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

很有趣,当我把相同的内容作为评论时,我得到了一个赞,但是当我把它作为答案时,却被踩了 :P - Abi

3

你的代码在读取输入到values方面看起来很好。现在你可以反向遍历该数组并打印值:

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

i == 0时,它将打印values[9],因为10 - 0 - 1 = 9。最后,当i == 9时,它将打印values[0],因为10 - 9 - 1 = 0。

正如您所看到的,没有必要使用额外的reverseNums数组。

附注:如果您想的话,可以将int[] values;values = new int[10];合并成一行:int[] values = new int[10];


0

我需要一些关于我所接到的任务的帮助。 - drew moore
实际上,他说的第一件事是这是一个作业。 - acdcjunior
但是如果这个问题在谷歌上被搜索,大多数情况下不会出现,因为有人有任务。总的来说,将其保留为答案是很有帮助的。 - John Riselvato

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));

0

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


这些听起来都很有道理,但我不太确定如何循环这些值或将它们拆分并使其向后运行。这只是我上编程的第一个学期。 - user2268587

-1

要将其反转:

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

Op 不想要数字的逆自然顺序,而是输入顺序的逆序。 因此 2,5,3 -> 3,5,2(而不是 5,3,2) - Adriaan Koster
@AdriaanKoster 没有注意到。已修复。(已移除对Arrays.sort()的调用) - Bohemian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接