问题描述
编写一个程序,读入一组整数(不超过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
解题思路:
本题主要考察对栈结构的运用,首先观察本题我们可知:我们需要不断往数组中存入数据,当输入0后结束并且逆序输出,这个过程与栈结构进栈出栈非常类似,因此我们可以创建栈结构来接收数组,进而通过出栈方式实现逆序排列。
注意:
格式要求,最后一个数后不能有空格,因此出栈是需要判断是否为最后一个数,若是则不输出空格!
代码如下:
import java.util.Scanner;
import java.util.Stack;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Stack<Integer> st = new Stack<Integer>();//创建Integer类型的栈结构
for (int i = 0; i < 20; i++) {
int n = sc.nextInt();
if(n==0){//若为0则跳出循环
break;
}else{
st.push(n);
}
}
while(!st.empty()){
if(st.size()>1){//判断是否为最后一个元素
System.out.print(st.pop()+" ");
}else{
System.out.print(st.pop());
}
}
}
}
祝愿每个热爱编程的热血青年都能实现自己的梦想!