我正在编写一个程序,允许用户在堆栈中输入正整数列表(以0结尾)并以相反的顺序显示它们。我首先尝试打印出堆栈的元素以便首先测试它,但是当我输入0时程序没有打印出元素。 这是我的计划:
import java.util.*;
public class MyClass{
public static void main(String[] args) {
Scanner sc= new Scanner(System.in);
Stack<Integer> addToStack= new Stack<Integer>();
int num;
System.out.println("Enter the a list of positive integers. Terminate with a 0.");
num= sc.nextInt();
while(num!=0){
addToStack.push(num);
}
System.out.println("Displaying numbers from the stack "+ addToStack);
}
}
答案 0 :(得分:2)
您无法循环控制输入的号码。
使用这些while ((num = sc.nextInt()) != 0) {
结果现在是:
Enter the a list of positive integers. Terminate with a 0.
1
2
0
Displaying numbers from the stack [1, 2]
答案 1 :(得分:1)
你有一个无限循环。你必须重新询问用户一个新的整数,否则你将不断循环
while(num!=0){
addToStack.push(num);
num= sc.nextInt();
}
答案 2 :(得分:1)
您的代码将无限运行。您必须在循环中编写num= sc.nextInt();
。
e.g:
while(num!=0){
addToStack.push(num);
num= sc.nextInt();
}
答案 3 :(得分:1)
接受用户输入
当输入为0时,您可以使用无限循环来获取用户输入并中断循环。
对用户输入进行排序
当您需要按相反顺序对输入进行排序时。因此,您可以使用Collections.sort(List,Compartor)
类中提供的默认java集合排序方法Collections
。
使用以下代码。
class MyClass {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Stack<Integer> addToStack = new Stack<Integer>();
int num;
do {
System.out.print("Enter the a list of positive integers. Terminate with a 0.");
num = sc.nextInt();
addToStack.push(num);
} while (num != 0);
//sort reverse order
Collections.sort(addToStack, Collections.reverseOrder());
System.out.print(addToStack);
}
}