Как заставить программу проверять экземпляр буквы в java?

Oct 08 2020

Я создаю кассовый аппарат, в котором мне нужно использовать сканер, и я могу иметь только 5 входных сумм. Он также должен включать hst, и это значит, что после или перед суммой стоит только «h». У меня вопрос: как программа распознает, что я поставил букву «h» после или перед суммой? Кажется, это делается только с использованием строковой переменной, так как мне это сделать? Мне нужно хранить входные данные в массиве, и поэтому у меня это работает.

Мой код:

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

Ответы

1 Hades Oct 08 2020 at 16:01

приведенный ниже код запрашивает ввод пользователя 5 раз, и в массиве будут только допустимые значения, значения Vald - это значения с 'h' в начале или в конце и должны встречаться только один раз. т.е. в "h" в конце и в начале или более одного раза недопустимо.

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]);
        }
    }
}

ввод и результат

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