Estoy tratando de crear un programa que toma la entrada del usuario desde un escáner y lo empuja en una pila y, a continuación, se zafa de cada elemento y lo imprime. Aquí está mi código hasta el momento:

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());
    }
}
}
  • Por favor, intenta describir el problema y formular una pregunta específica.
  • Hasta ahora, solo me dan el primer número que se ha introducido.
  • Sólo llame nextInt() una vez. Hacer una matriz del tamaño de la primera int ingresado y luego iterar a través de la matriz de entrar en el número introducido en stack.
  • Parece que usted está tratando de leer en los números del usuario. Usted está utilizando el número que el usuario introduce para crear una matriz de longitud de número, pero después de que usted no llenar la matriz con cualquier enteros
InformationsquelleAutor Robert | 2014-03-09

2 Comentarios

  1. 1

    Intentar algo más parecido a esto…

    Antes de sólo lectura en un número de una vez, que parece que desea utilizar para el tamaño de su matriz. Después de esto, usted impulsar continuamente el mismo número en la pila porque nunca se solicitará al usuario que ingrese en cualquier otro número.

    El código de abajo va un paso más allá que el código en el que, una vez que han aprendido el número del Usuario y ajustar su tamaño de la matriz, de pedir un nuevo número una y otra vez para llenar la matriz hasta que la matriz se llena. Esto se puede lograr por la que pide al usuario que introduzca un valor una y otra vez en un bucle for.

    No estoy realmente seguro de por qué usted necesita una matriz para hacer lo que quieres hacer, aunque, considere la posibilidad de quitar la matriz y utilizando sólo el primer número introducido como sus límites para el bucle for en lugar de que el tamaño de la matriz. La matriz de estructura de datos es simplemente un desperdicio de espacio como el único momento en el que siempre uso es el uso de su longitud como un punto de parada en el bucle 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());
    
    
          }    
        }
    }

    Basada en el comentario de abajo considere la posibilidad de probar algo así como el código de abajo. Usted es sólo la impresión de un número por las mismas razones que he mencionado…

    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()); 
            } 
        } 
    } 
    • +1 si pones un poco de explicación, junto con el código.
    • Estoy trabajando en ello 🙂
  2. 0

    Usted tiene que iterar sobre todos los números introducidos por el usuario, y los inserta en la pila:

    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());
    }
    • Lo siento chicos, me refería a sacar la matriz. Aquí está el código que me refería al post, que sólo parece empujar el primer número que se introduce en la pila y se despliega y muestra que sólo el número, independientemente de la cantidad de números que introduzca:
    • import java.util.*; clase pública NumberReverse { public static void main(String[] args) { Scanner sc = new Scanner(System.en); System.a cabo.print(«Ingrese los números: «); int numero = sc.nextInt(); Pila<Integer> pila = new Stack<Integer>(); de la pila.push(número); while (!(la pila.isEmpty())) { System.a cabo.println(pila.pop()); } } }
    • He vuelto a publicar esta pregunta. Gracias por todas las respuestas rápidas.
    • Robert, he revisado mi respuesta con el código más reciente publicado si usted siente que su pregunta ha sido contestada, considere la posibilidad de aceptar una respuesta!
    • Josh, gracias por la ayuda. Acepté su respuesta. Tuve que poner el de impresión «Ingresa tus números» por encima del bucle para, en caso contrario la instrucción imprime el mismo número de veces el tamaño de pila.

Dejar respuesta

Please enter your comment!
Please enter your name here