java - 输入字符或带点的数字时发送垃圾邮件

标签 java sockets

我需要输入只是一个 float 。当我输入字符、字符串或带有点的数字(100.96 而不是 100,96)时,程序会发送垃圾邮件。 我添加了 .hasNextFloat() 但没有任何改变。 有什么建议吗? 谢谢。

boolean prosegui = false;
while (!prosegui) {
    System.out.print("Digitare il proprio saldo in euro (€): ");
    // Se si vuole inserire un saldo che comprende i decimali bisogna utilizzare la virgola.
    if (scanner.hasNextFloat()) {
        saldo = scanner.nextFloat();
        if (saldo > 0) {
            prosegui = true;
        } else
            System.out.println("Il proprio saldo non può essere pari o inferiore a €0.");
    } else {
        System.out.println("Il saldo immesso non è valido.");
        System.out.println("Immettere un saldo valido.");
    }
}

最佳答案

当您输入无法转换为 float 的内容时,您会得到适当的异常。你可以捕获他们:

boolean prosegui = false;
while (!prosegui) 
{
    System.out.print("Digitare il proprio saldo in euro (€): ");
    try
    {   
        saldo = scanner.nextFloat(); 
        if (saldo > 0) 
        {
            prosegui = true;
        } 
        else
        {
            System.out.println("Il proprio saldo non può essere pari o inferiore a €0.");
        }   
    }
    catch (Exception e)
    {
        System.out.println("Il saldo immesso non è valido.");
        System.out.println("Immettere un saldo valido."); 
        scanner.nextLine(); // clear bad input
    }  
}

关于java - 输入字符或带点的数字时发送垃圾邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60606752/

相关文章:

java - 如何修复运行时错误 - 线程 "main"java.util.NoSuchElementException 中的异常

c++ - 如何使用 C/C++ 套接字从 HTTP 读取二进制文件

java - 我可以使用设计模式来解决这个问题吗?

java - Android:如何在android中下载文件?

java - 从另一个 JFrame 执行 JFrame

sockets - 中断 gen_tcp :recv in erlang

c - C 中使用多个分离线程的内存泄漏

javascript - 在 forEach 循环中调用 socket.disconnect 实际上并没有在所有套接字上调用 disconnect

java - 如何在持久化时忽略 hibernate 实体中的子类

java - android 中的 USB 设置未存储