Как заставить программу проверять экземпляр буквы в java?
Я создаю кассовый аппарат, в котором мне нужно использовать сканер, и я могу иметь только 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();
}
}
}
Ответы
приведенный ниже код запрашивает ввод пользователя 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