Java - Ayuda en POO

 
Vista:
sin imagen de perfil
Val: 21
Ha disminuido su posición en 46 puestos en Java (en relación al último mes)
Gráfica de Java

Ayuda en POO

Publicado por Jorge (7 intervenciones) el 09/06/2020 17:48:32
Modifica el programa para que en lugar de ser un número o letra asignado, sea introducido por el usuario. Además el programa deberá leer una serie de valores, y contar cuantos errores fueron cometidos, y cuantos aciertos, un error es cuando el usuario teclea un valor de tipo cadena. Un acierto es cuando el usuario teclea un valor numérico. El programa deberá terminar cuando el usuario teclee la palabra SALIR.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public class Uno {
 
    private static int metodo (){
        int valor = 0;
        try{
            valor = valor +1;
            valor = valor + Integer.parseInt("42");
            valor = valor + 1;
            System.out.println("Valor al final del try: " + valor);
         }catch(NumberFormatException e){
             valor = valor + Integer.parseInt("42");
             System.out.println("Valor al final de catch: " + valor);
           }finally{
            valor = valor +1;
            System.out.println("Valor al final de finally: "+ valor);
         }
        valor = valor +1;
        System.out.println("Valor antes del return: "+ valor);
        return valor;
 
    }
 
    public static void main (String[]args){
        try{
            System.out.println(metodo());
        }catch(Exception e){
            System.out.println("Excepcion en metodo()");
            e.printStackTrace();
        }
    }
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Franklin
Val: 456
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Ayuda en POO

Publicado por Franklin (179 intervenciones) el 09/06/2020 18:41:54
Inicialmente te pide que reemplaces el valor fijo por uno ingresado por el usuario, para ello podrías "leer" usando Scanner, y que termine cuando el valor ingresado sea igual a "salir"

por lo que tendrías que usar un do While, para leer al menos 1 vez y se repita mientras que el valor sea diferente a "salir"

1
2
3
do{
// código de lectura y demás
} while(!valor.equalsIgnoreCase("salir"));

con el equals comparas el string leido y almacenado en la variable "valor", y usando IgnoreCase es para que no infiera si es mayusculas, minusculas o mixto. y la negación para que se repita mientras sea lo contrario al valor entre comillas que es <salir>


Link Lectura por scanner; https://javadesdecero.es/io/clase-scanner-ejemplos/


la segunda parte sería sumar la cantidad de "errores" que son las veces de que el valor introducido no es un número.

Para ello te regalaré un método el cual copie hace mucho, el cual le envías un String x, y de acuerdo a los caracteres que lo forman lo compara con todos los números. Si el String x enviado posee algún valor no numérico devolverá false.

Dicho metodo no fue creado por mi, pero de vez en cuando lo utilizo para validar, y pues quizás otros tengan una mejor forma de hacerlo, yo solo te muestro una forma.




METODO:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public boolean ComprobarNumeros(String clave) {
    String numeros[] = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"};
    boolean correcto = false;
    int temp = 0;
 
    for (int j = 0; j < clave.length(); j++) {
 
        for (int i = 0; i < numeros.length; i++) {
            //if (clave.contains(numeros[i]))
            String tempx = String.valueOf(clave.charAt(j));
            if (tempx.contains((numeros[i]))) {
                temp++;
                break;
            }
        }
        if (temp == clave.length()) {
            correcto = true;
        }
    }
 
    if (correcto == false) {
        System.out.println("No todos los valores son númericos");
    }
 
    return correcto;
}

Explicación del metodo.
Dado un String x y un arreglo de 10 posiciones conformados por (0,1,2,3,4,5,6,7,8,9)
Mediante un for recorres cada una de los caracteres que conforman el String y es comparado con todos los números mediante otro for, Si la posicion n del String x llega a ser algún número, entonces se interrumpe el segundo for (el que compara con los números) e incrementa un contador.

al final si el contador = al tamaño o (lenght) del String, entonces todos fueron números y devuelve true, caso contrario, al menos 1 no fue un número entonces devuelve false.

por lo que....

1. Leer tu valor con el uso de scanner
2. mediante un if (ComprobarNumeros(ValorLeido) == false) entonces sumas el contador de errores
3. todo esto dentro del do While previamente definido
4. tras salir del doWhile solo imprimes.



es una forma de hacerlo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar