Делает ли это в то время как код означает, что ввод всегда будет в Float? Что делает время в конце? - PullRequest
0 голосов
/ 03 сентября 2018
  1. Это часть моего ввода
  2. Я бы хотел, чтобы пользователь вводил только с плавающей точкой, что это значит?:

    Boolean start;
    do{
        System.out.println("Enter value for Alpha:");
            if(sc.hasNextFloat()){
                al = sc.nextFloat();
                start = true;
            } else{ 
                System.out.println("Please enter a number");
                start = false;
                sc.next();
            }
        } while(!(start));
    

Ответы [ 2 ]

0 голосов
/ 03 сентября 2018
boolean start;
start = false;
Scanner sc = new Scanner(System.in);
float alphaFloat;
do {
   try{
         System.out.println("Enter value for Alpha: ");
         String alpha = sc.next();
               if(alpha.contains(".")) {
                   System.out.println("Float stored");
                    alphaFloat = Float.valueOf(alpha);
                    start = true;
              }
               else {
                     System.out.println("Please enter a float. That was not a float.");

              }

               catch(NumberFormatException e) {
                     System.out.println("Please enter a number that is properly formatted");
         }

               finally {
                      System.out.println("\r\n");
         }

       }while(!start);

Вот ваш пример вывода: Введите значение для альфа: 2.2.2.2 Invalid

Enter value for Alpha: 
2
Please enter a float. That was not a float.


Enter value for Alpha: 
3.5
Float stored

В вашем коде пользователь может ввести int технически, и он все равно будет выполняться, хотя у вас есть метод hasNextFloat () в вашем условном выражении. Я отредактировал код и сделал ввод строкой. Следовательно, если в строке есть десятичная дробь, мы можем привести ее к типу с плавающей точкой. Если десятичной дроби нет, мы знаем, что это не число с плавающей запятой, и запросим дополнительные данные. Теперь еще один фактор заключается в том, что при желании вы можете ввести любой пользовательский ввод в число с плавающей точкой. Вероятно, было бы также неплохо установить блок try-catch, чтобы вы могли обработать пользователя, потенциально вводящего неправильный номер.

0 голосов
/ 03 сентября 2018

Вы можете использовать следующий код для вашей проблемы:

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.println("Enter value for Alpha:");
    while(true) {
        if(sc.hasNextFloat()) {
            float al = sc.nextFloat();
            System.out.println(al);
            break;
        } else {
            System.out.println("Enter a valid float");
            sc.next();
        }
    }
    sc.close();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...