es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo filtro una entrada de usuario para aceptar caracteres e int, pero no caracteres especiales. Luego, solo tomo los int y los coloco en un array.

Crea una nueva cola con el tipo de datos String, en la que el usuario ingrese los elementos de la cola.

Restricciones:
1. El usuario solo puede ingresar letras y números (A-Z, a-z y 0-9).
2. El programa solo toma los números de la entrada (entero).
3. En cualquier instancia en la que se ingrese al menos un carácter especial, el programa devolverá un error (esto incluye ESPACIO).

Estos son los requisitos para el programa.
Y esto es lo que tengo hasta ahora:
“`import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
import java.util.Iterator;

public class Main {
public static void main (String args[]){

<pre><code>Scanner scan = new Scanner(System.in);
System.out.println("Este es un programa de Cola. Por favor, ingrese cuánto/s número/s se ingresará/n.");
int count = scan.nextInt();
scan.nextLine();
System.out.println("Ingrese el/los número/s válido/s:");
String[] list = new String[count];

for (int i = 0; i < count; i++){
list[i] = scan.nextLine();
}
Queue<string> newlist = new LinkedList<string>();

for (String i:list){
newlist.add(i);
}
System.out.println(newlist);

Iterator<string> i=newlist.iterator();

while(i.hasNext()){

if(i.next().toString().matches("[^0-9]+")){
i.remove();
}
}
System.out.println(newlist);
</code></pre>

}
}
“`

Obviamente, este programa solo elimina los caracteres sin combinar con los números. Intenté usar el replaceAll("[^\\d]", " "); pero no sé cómo hacer que funcione. Por favor, ayuda.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para crear una nueva cola con el tipo de dato String y elementos ingresados por el usuario con las restricciones dadas, modifique el código de la siguiente manera:

    import java.util.LinkedList;
    import java.util.Queue;
    import java.util.Scanner;
    
    public class Main {
        public static void main (String args[]) {
    
            Scanner scan = new Scanner(System.in);
            System.out.println("Este es un programa de cola. Por favor, ingrese la cantidad de elementos que se ingresarán.");
            int count = scan.nextInt();
            scan.nextLine();
    
            Queue<string> newlist = new LinkedList<string>();
    
            for (int i = 0; i < count; i++) {
                System.out.println("Ingrese el elemento " + (i+1) + ":");
                String input = scan.nextLine();
    
                // Verificar si la entrada es válida (solo letras o números)
                if (!input.matches("^[a-zA-Z0-9]*$")) {
                    System.out.println("[ERROR] Entrada no válida. Solo se aceptan letras y números.");
                    return;
                }
    
                // Verificar si la entrada contiene números
                if (input.matches(".*\\d.*")) {
                    // Eliminar caracteres que no sean dígitos
                    input = input.replaceAll("\\D", "");
                    newlist.add(input);
                }
            }
    
            System.out.println("Elementos en la cola:");
            System.out.println(newlist);
        }
    }
    

    Este código utiliza expresiones regulares para verificar si la entrada es válida (solo letras o números) y si contiene números. Si la entrada es válida y contiene números, elimina los caracteres que no son dígitos utilizando replaceAll() y agrega la cadena resultante a la cola. Si la entrada es inválida, el programa muestra un mensaje de error y termina.

    Para probar el código, compile y ejecute la clase Main. El programa le pedirá al usuario que ingrese el número de elementos que se agregarán a la cola, y luego solicitará al usuario que ingrese cada elemento. Si se ingresa una entrada inválida, el programa mostrará un mensaje de error y terminará. De lo contrario, mostrará la cola final de elementos enteros válidos.

Comments are closed.