如果扫描仪输入为空,如何继续循环

问题描述 投票:0回答:1

首先,我是 Java 新手,这是我的代码:

import java.util.InputMismatchException;
import java.util.Scanner;

public class temperaturas2 {

    public static float celsiusFarenheit (float celsius) {
        float factor = 1.8f;
        short factor2 = 32;
        return (celsius * factor) + factor2;
        // Conversion de celsius a farenheit con su formula
    }
    
    public static void main (String[] args) {
        float celsius; //Inicializacion de variable celsius a introducir
        float farenheit; //Inicializacion de variable farenheit a convertir
        boolean loop = true;
        Scanner sc = new Scanner(System.in); //Declaracion del escaner de escucha
        System.out.println("Conversor de grados Celsius a Farenheit");
        System.out.println("Los numeros decimales se indican con comas, no puntos");

        do {

            try {
                System.out.print("Ingresa los grados Celsius a convertir: ");
                celsius = sc.nextFloat();
                farenheit = celsiusFarenheit(celsius);
                System.out.printf("%f grados Celsius son %f grados Farenheit", celsius, farenheit);
                loop = false;
                sc.close();
            } catch (InputMismatchException ex) {
                System.out.println("Debes ingresar un numero positivo o negativo y con comas en caso de ser decimal");
                sc.next();
                loop = true;
            }

        } while (loop);
        
    }

}

这是一个简单的控制台脚本,可以使用各自的公式将摄氏度转换为华氏度,我使用 try/catch 设置了一个异常捕获器,以防用户引入不是数字的内容,如果用户这样做,它会再次询问再次输入一个数字,直到他提供有效的内容并且代码完美运行。问题是,如何检测用户什么时候没有输入任何内容?然后我会触发一条警报消息并继续循环。 如果有人能解释一下这段代码中的“sc.next()”到底是什么,我也将不胜感激,因为如果没有它,脚本会无限循环,但这不太重要。 PD:消息是西班牙语的,如果你需要我翻译什么,尽管问 谢谢

我尝试将浮点数转换为字符串以使用函数检查内容,但我做不到

java validation input java.util.scanner user-input
1个回答
0
投票

sc.next()
将字符串读取到空格,例如,如果您写入 1 2,则 sc 将只收到 1,在您的情况下,您可以在尝试中验证 celsius 是否为 null,如 if (celsius.empty) return 或
if (celsius == "")
返回您的错误消息。

© www.soinside.com 2019 - 2024. All rights reserved.