¿Cómo hacer que el programa verifique la instancia de una letra en java?

Oct 08 2020

Estoy creando una caja registradora donde tengo que usar un escáner y solo puedo tener 5 cantidades de entrada. También tiene que incluir hst y eso es solo por tener una "h" después o antes de una cantidad. Mi pregunta es ¿cómo reconocería el programa que he puesto una "h" después o antes de una cantidad? Esto parece hacerse solo usando una variable de cadena, entonces, ¿cómo lo lograría? Tengo que almacenar las entradas en una matriz, así que lo hice funcionar.

Mi código:

 // Import scanner class
 import java.util.Scanner;

// Create class and method
class Main {
public static void main(String[] args) {

// Declare the scanner object and create scanner variables
Scanner inp = new Scanner(System.in);
System.out.println("Press any key to start");
String key = inp.nextLine();
System.out.println("\nEnter the amount of each item");
System.out.println("Upto 5 inputs are allowed!\n");

// Define an array double variable, set the limit to 5 inputs
double[] numbers = new double[5];

// Create a for loop to input any numbers 5 times
for (int i = 0; i < numbers.length; i++){

    // Add a scanner input to let the user type out the values
    numbers[i] = inp.nextDouble();
    }
  }
} 

Respuestas

1 Hades Oct 08 2020 at 16:01

El siguiente código solicita la entrada del usuario 5 veces, y solo los valores válidos estarán en la matriz, los valores Vald son los valores con 'h' al inicio o al final y solo deben ocurrir una vez. es decir, en 'h' al final y al inicio o más de una vez no es válido.

public static void main(String[] args) throws ParseException {
    int counter = 1;
    Double[] result = new Double[5];
    
    int index = 0;
    while(counter <= 5) {           
        Scanner scanner = new Scanner(System.in);
        System.out.print("Enter an Amount ");
        String value = scanner.nextLine();      
        int indexOfH = value.indexOf("h");
        int lastIndexOfH = value.lastIndexOf("h");
        boolean containsHatstartsOrEnd = indexOfH == 0 || indexOfH == (value.length()-1);
    
        if(containsHatstartsOrEnd && indexOfH==lastIndexOfH){ //Validate h at begins or end and should contains only once
            result[index] = Double.parseDouble(value.replace("h", ""));
            index++;
        }
        counter++;
    }
    System.out.println("Printing Valid values");

    for(int i=0; i< result.length; i++) {
        if(result[i]!=null) {
            System.out.println(result[i]);
        }
    }
}

entrada y resultado

Enter an Amount 13.45h
Enter an Amount 55h.65
Enter an Amount 32h.33h
Enter an Amount h100.23
Enter an Amount h20
Printing Valid values
13.45
100.23
20.0