问题描述
编写一个程序,读入一组整数(不超过20个),并把它们保存在一个整型数组中。当用户输入0时,表示输入结束。然后程序将把这个数组中的值按逆序重新存放,并打印出来。例如:假设用户输入了一组数据:7 19 -5 6 2 0,那么程序将会把前五个有效数据保存在一个数组中,即7 19 -5 6 2,然后把这个数组中的值按逆序重新存放,即变成了2 6 -5 19 7,然后把它们打印出来。
输入格式:输入只有一行,由若干个整数组成,中间用空格隔开,最末尾的整数为0。
输出格式:输出也只有一行,即逆序排列后的整数,中间用空格隔开,末尾没有空格。
输入输出样例
样例输入
7 19 -5 6 2 0
样例输出
2 6 -5 19 7
算法思想:输入的是不确定个数的一行数字,采用集合类list存储数据,一个个从键盘读取数据,直到读到0,结束读取数据,表示数字输入结束,然后调用Collection中的reverse()方法将list翻转输出即可。
import java.util.*;
public class test{
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
ArrayList<Integer>list=new ArrayList<>(); //采用集合存储数据
for(int a=sc.nextInt();a!=0;a=sc.nextInt()){ //读取数据
list.add(a);
}
Collections.reverse(list);//将数列翻转
for(int i:list){ //for-each 遍历输出
System.out.print(i+" ");
}
}
}