Java Как проверить, 2 входных данных являются плавающими - PullRequest
0 голосов
/ 01 мая 2020

Я прошу пользователя ввести 2 числа с плавающей запятой и нужно подтвердить, правильно ли пользователь ввел 2 числа с плавающей запятой. Я использую «Сканер» для чтения ввода пользователя и использую «.hasNextFloat ()» для проверки, является ли ввод пользователя плавающим или нет. Мои коды как ниже. Но я обнаружил, что написанные мной коды будут проверять только первый ввод пользователя при первом запуске do.. while l oop, поэтому, если ввод пользователя (символ + с плавающей запятой), коды могут дать правильный результат. Но если пользовательский ввод (float + символ), то он обработает sh, потому что он пропустит do.. while l oop и go непосредственно в firstN = readInput1.nextFloat () ; secondN = readInput1.nextFloat (); Поэтому я хочу знать, как я могу проверить оба ввода, используя do ... while l oop. Спасибо!

public static void main(String[] args) {

    System.out.printf("Welcome to Lucy's Get 2 Floats Program! \n\n");

    Scanner readInput1 = new Scanner(System.in);

    float firstN;
    float secondN;

    do
    {       
    System.out.println("Please enter two floats separated by a space: ");
    while(!readInput1.hasNextFloat()) {  
        System.out.println("You have entered an invalid choice. Please try again:");
      readInput1.next(); 
      readInput1.next();
    }
    } while(!readInput1.hasNextFloat());    

    firstN = readInput1.nextFloat();
    secondN = readInput1.nextFloat();
    System.out.printf("You have entered two valid floats: %5.2f and %5.2f", firstN, secondN);

}

1 Ответ

0 голосов
/ 01 мая 2020

Этот код работает, но я не знаю, является ли он лучшим / наиболее эффективным способом:

public static void main(String[] args) {

    System.out.printf("Welcome to Lucy's Get 2 Floats Program! \n\n");

    Scanner readInput1 = new Scanner(System.in);

    float firstN;
    float secondN;

    System.out.println("Please enter two floats separated by a space: ");
    boolean loop = true;
    while(loop) {
        if (readInput1.hasNextFloat()) {
            firstN = readInput1.nextFloat();
            if (readInput1.hasNextFloat()) {
                secondN = readInput1.nextFloat();
                System.out.printf("You have entered two valid floats: %5.2f and %5.2f", firstN, secondN);
                loop = false;
            } else {
                System.out.println("You have entered an invalid choice. Please try again:");
                readInput1.next();
            }
        } else {
            readInput1.next();
            readInput1.next();
            System.out.println("You have entered an invalid choice. Please try again:");
        }
    }

}
...