java - 从用户输入读取堆栈的整数

标签 java stack java.util.scanner

我正在尝试创建一个程序,该程序从扫描仪获取用户输入并将其插入堆栈,然后弹出每个元素并将其打印出来。这是迄今为止我的代码:

import java.util.*;

public class NumberReverse {
public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);

    System.out.print("Enter numbers: ");
    int number = sc.nextInt();

    Stack<Integer> stack = new Stack<Integer>();
    stack.push(number);

    while (!(stack.isEmpty())) {
        System.out.println(stack.pop());
    }
}
}

最佳答案

尝试更多类似的东西...

在您一次只读取一个数字之前,这似乎您希望用于数组的大小。此后,您不断地将相同的数字压入堆栈,因为您从不提示用户输入任何其他数字。

下面的代码比您的代码更进一步,一旦您从用户那里了解了数字并设置了数组大小,您就会一遍又一遍地请求一个新数字来填充您的数组,直到您的数组被填满。这可以通过提示用户在 for 循环中一遍又一遍地输入值来完成。

我不太确定为什么你需要一个数组来完成你想做的事情,但考虑删除数组并仅使用输入的第一个数字作为 for 循环的边界而不是数组大小。数组数据结构实际上只是浪费空间,因为您唯一使用它的时候就是使用它的长度作为 for 循环中的停止点

public class NumberReverse {
      public static void main(String[] args) {
      Scanner sc = new Scanner(System.in);


      System.out.print("Enter stack size: ");

      int number = sc.nextInt();
      int[] array = new int[number];

      Stack<Integer> stack = new Stack<Integer>();
      for(int i = 0; i < array.length; i++){
          System.out.println("Enter your number: ");
          int value = sc.nextInt();              
          stack.push(value);
      }

      while (!(stack.isEmpty())) {
          System.out.println(stack.pop());


      }    
    }
}

根据下面的评论,考虑尝试类似下面的代码。您只打印出一个数字,原因与我上面列出的相同......

import java.util.*; 
public class NumberReverse { 
    public static void main(String[] args) { 
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter how many numbers you want to place on the Stack: ");
        int stackSize = sc.nextInt();
        Stack<Integer> stack = new Stack<Integer>();
        for(int i = 0; i < stackSize; i++){ 
            System.out.println("Enter numbers: "); 
            int number = sc.nextInt();  
            stack.push(number); 
        }
        while (!(stack.isEmpty())) { 
            System.out.println(stack.pop()); 
        } 
    } 
} 

关于java - 从用户输入读取堆栈的整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22278160/

相关文章:

java - 如何同时创建 2 个 VPN 接口(interface)?

Java:水平滚动时 JTable 列不适合 JScrollPane

java - 深度优先搜索多个解决方案

iOS 执行 pushViewController 并且不弹出

c++:使用throw,try and catch

java - 用于获取用户输入的 for 循环允许您为第一个问题输入两个值,但仅计算一个值

java - 尝试从文件读取整数时出现 NoSuchElementException?

Java Spring框架-Bootstrap集成

java - 在命令设计模式中将上下文传递给执行方法

java - 当底层没有流时是否需要关闭Scanner?