Java 当代码意味着输入将始终处于浮动状态时,这会发生吗?while最后做了什么? 这是我输入的一部分

Java 当代码意味着输入将始终处于浮动状态时,这会发生吗?while最后做了什么? 这是我输入的一部分,java,while-loop,Java,While Loop,我希望用户只在float中输入,这意味着什么 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 numb

我希望用户只在float中输入,这意味着什么

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

您可以使用以下代码解决问题:

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();
}
以下是您的示例输出: 输入Alpha的值: 2.2.2.2 无效的

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


Enter value for Alpha: 
3.5
Float stored

在代码中,用户可以从技术上输入int,尽管在条件语句中有hasNextFloat()方法,但它仍将执行。我编辑了代码并将输入设置为字符串。因此,如果字符串中有一个十进制数,我们可以将其类型转换为浮点。如果没有十进制数,我们知道它不是浮点数,将要求额外的输入。现在,另一个因素是,如果您愿意,您可以将任何用户输入类型转换为float。设置try-catch块可能也是一个好主意,这样您就可以处理可能输入无效号码的用户

乍一看,我认为您已经实现了要求使用输入“float”的目标。有什么问题吗?如果您不关闭
系统.in
或(out,err),程序退出时它将被关闭。
Enter value for Alpha: 
2
Please enter a float. That was not a float.


Enter value for Alpha: 
3.5
Float stored