Como fazer o programa verificar a instância de uma letra em java?

Oct 08 2020

Estou criando uma caixa registradora em que preciso usar um scanner e só posso ter 5 valores de entrada. Tem de incluir também hst, ou seja, apenas tendo um "h" antes ou depois de um montante. Minha pergunta é como o programa reconheceria que coloquei um "h" antes ou depois de um valor? Isso parece ser feito apenas usando uma variável de string, então como eu faria isso? Eu tenho que armazenar as entradas em um array, e então eu fiz isso funcionar.

Meu 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();
    }
  }
} 

Respostas

1 Hades Oct 08 2020 at 16:01

o código abaixo solicita a entrada do usuário 5 vezes, e apenas os valores válidos estarão no Array, os valores Vald são os valores com 'h' no início ou no final e devem ocorrer apenas uma vez. ou seja, em 'h' no final e no início ou mais de uma vez, é invá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 e 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