我需要一些帮助来完成这项任务。不要求任何人做我的工作,但我真的很老实地坚持如何做到这一点。
我应该编写一个程序,提示用户输入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 ] );
}
}
}
答案 0 :(得分:5)
如果您不想存储反转值
for (int i = (values.length -1); i>= 0; i--)
{
System.out.println( values[ i ] );
}
答案 1 :(得分: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
数组。
PS:如果需要,您可以将int[] values;
和values = new int[10];
合并为一行:int[] values = new int[10];
答案 2 :(得分:0)
使用Scanner.nextLine()
将整行读作字符串,然后使用String.split(" ");
将其拆分为数组。在此之后,您可以简单地从数组的末尾开始向后迭代并打印数字。
答案 3 :(得分:0)
如果不是作业,那么为什么不尝试使用http://commons.apache.org/proper/commons-lang/库
ArrayUtils.reverse(int[] array)
答案 4 :(得分: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));
答案 5 :(得分:-1)
要扭转它:
for (int i = 0; i < values.length; i++)
reverseNums[values.length - i - 1] = values[i];