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

Java 从用户输入读取堆栈的整数,java,stack,java.util.scanner,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.

我试图创建一个程序,从扫描仪获取用户输入并将其推到堆栈上,然后弹出每个元素并打印出来。以下是我迄今为止的代码:

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());
    }
}
}
import java.util.*;
公共类编号相反{
公共静态void main(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
系统输出打印(“输入数字:”);
int number=sc.nextInt();
堆栈=新堆栈();
堆栈推送(数字);
而(!(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());


      }    
    }
}
public class NumberReverse{
公共静态void main(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
System.out.print(“输入堆栈大小:”);
int number=sc.nextInt();
int[]数组=新的int[number];
堆栈=新堆栈();
for(int i=0;i
根据下面的评论,考虑下面的代码。您只打印出一个号码,原因与我上面列出的相同

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()); 
        } 
    } 
} 
import java.util.*;
公共类编号反向{
公共静态void main(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
System.out.println(“输入要在堆栈上放置的数字:”);
int stackSize=sc.nextInt();
堆栈=新堆栈();
对于(inti=0;i
您必须迭代用户输入的所有数字,并将它们推到堆栈上:

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

    System.out.print("Enter numbers (finish with something else): ");

    final Stack<Integer> stack = new Stack<Integer>();

    while (sc.hasNextInt())
        stack.push(sc.nextInt());

    while (!(stack.isEmpty()))
        System.out.println(stack.pop());
}
publicstaticvoidmain(字符串[]args){
最终扫描仪sc=新扫描仪(System.in);
System.out.print(“输入数字(以其他方式完成):”;
最终堆栈=新堆栈();
while(sc.hasnetint())
stack.push(sc.nextInt());
而(!(stack.isEmpty())
System.out.println(stack.pop());
}

请尝试描述问题并提出具体问题。到目前为止,我只得到输入的第一个号码。您只需调用
nextInt()
一次。您创建了一个数组,大小与输入的第一个int相同,然后在该数组上迭代,将输入的数字输入到
堆栈中。您正在使用用户输入的数字来实例化一个长度为number的数组,但是在这之后,您没有使用任何Intssory人员填充该数组,我打算取出该数组。下面是我想发布的代码,它似乎只会将您输入的第一个数字推送到堆栈上,然后只弹出并打印该数字,而不管您输入多少数字:import java.util.*;public类NumberReverse{public static void main(String[]args){Scanner sc=new Scanner(System.in);System.out.print(“输入数字”);int number=sc.nextInt();Stack Stack=new Stack();Stack.push(number);而(!(Stack.isEmpty()){System.out.println(Stack.pop());}}我已经重新提出了这个问题。谢谢你的快速回复。罗伯特,我已经修改了我的答案和你的最新代码,如果你觉得你的问题已经得到回答,考虑接受一个答案。乔希,谢谢你的帮助。我接受了你的回答。我必须在for循环上方打印“enteryournumbers”,否则语句将打印与stackSize相同的次数。