Java语言怎么分辨输入的数字是单精度还是双精度的浮点数还是小数还是整数还是长整数,用switch可以判断的吗

Java语言怎么分辨输入的数字是单精度还是双精度的浮点数还是小数还是整数还是长整数,用switch可以判断的吗?条件怎么写呢

输入的数字是单精度还是双精度的浮点数还是小数还是整数还是长整数,可以使用if-else语句进行条件判断,而不是使用switch语句。

如图

img

代码

import java.util.Scanner;

public class NumberType {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入一个数字: ");
        double number = scanner.nextDouble();

        if (number % 1 == 0 && number >= Integer.MIN_VALUE && number <= Integer.MAX_VALUE) {
            System.out.println("该数字为整数");
        } else if (number % 1 == 0 && number >= Long.MIN_VALUE && number <= Long.MAX_VALUE) {
            System.out.println("该数字为长整数");
        } else if (number % 1 == 0.0) {
            System.out.println("该数字为小数");
        } else if (Math.abs(number) > Float.MIN_VALUE && Math.abs(number) < Float.MAX_VALUE) {
            System.out.println("该数字为单精度浮点数");
        } else {
            System.out.println("该数字为双精度浮点数");
        }
    }
}


在Java中,switch语句只能用于判断整型、字符串类型以及枚举类型,所以无法直接使用switch语句来判断输入的数字的类型(单精度浮点数、双精度浮点数、整数、长整数)

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/1097110
  • 你也可以参考下这篇文章:java语言中switch(x)语句括号中的表达式 x 的类型
  • 您还可以看一下 雷玉广老师的微服务系列第八季-Java中重写、重载及枚举课程中的 在switch中使用枚举类小节, 巩固相关知识点
  • 除此之外, 这篇博客: java中的流程控制语句(顺序结构,选择结构,循环结构)中的 switch选择结构 部分也许能够解决你的问题。
  • 以下回答由chatgpt基于相关博客总结生成:

    可以使用switch语句进行判断,下面是一种可能的写法:

    import java.util.Scanner;
    
    public class Main {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            System.out.print("请输入一个数字:");
            String input = scanner.nextLine();
    
            try {
                if (input.contains("f") || input.contains("F")) {
                    float floatValue = Float.parseFloat(input);
                    System.out.println("输入的数字是单精度浮点数");
                    // 可以在这里对单精度浮点数进行处理
                } else if (input.contains("d") || input.contains("D")) {
                    double doubleValue = Double.parseDouble(input);
                    System.out.println("输入的数字是双精度浮点数");
                    // 可以在这里对双精度浮点数进行处理
                } else if (input.contains(".")) {
                    double decimalValue = Double.parseDouble(input);
                    System.out.println("输入的数字是小数");
                    // 可以在这里对小数进行处理
                } else {
                    long longValue = Long.parseLong(input);
                    System.out.println("输入的数字是长整数");
                    // 可以在这里对长整数进行处理
                }
            } catch (NumberFormatException e) {
                System.out.println("输入的数字格式无法识别");
            }
    
            scanner.close();
        }
    }
    

    这里使用了Scanner类来读取用户输入,并根据输入的字符串进行判断。首先判断输入是否包含字母"f"或"F",如果包含则认为是单精度浮点数;然后判断输入是否包含字母"d"或"D",如果包含则认为是双精度浮点数;接着判断输入是否包含小数点".",如果包含则认为是小数;最后如果上述条件都不满足,则认为是长整数。

    注意,这里使用了try-catch语句来捕获NumberFormatException异常,以处理输入无法转换为数字的情况。如果输入的数字格式无法识别,则会输出相应的提示信息。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^