如何在 java 中检查用户输入是浮点数还是整数?

How to check if user input is a float or int in java?

我需要编写一个 Java 程序来要求用户从键盘输入一个数字。输出应指明是正数还是负数、浮点数还是整数、偶数还是奇数。仅使用 IF...ELSE 语句。

到目前为止,这是我的代码:

import java.util.Scanner;

public class PracticeClass1 {

public static void main(String[] args) {

    Scanner keyboard = new Scanner(System.in);

    System.out.println("Enter a number: ");

    int number = keyboard.nextInt();
    float Number = keyboard.nextFloat();

    if (number >= 1)
        System.out.print(number + " is a positive,");
    else 
        System.out.print(number + " is a negative,");

    if (number%2 == 0 )
        System.out.print(" even number");
    else 
        System.out.print(" odd number ");

    if (keyboard.hasNextInt()) 
        System.out.print(" is an integer");

    if (keyboard.hasNextFloat()) 
        System.out.println(" is a floating number");

    }
}

当您调用 keyboard.hasNextInt()keyboard.hasNextFloat() 时,您已经获得了输入,这意味着这些方法无需检查。

相反,在获取数字之前执行此操作并将结果存储在 boolean:

System.out.println("Enter a number: ");

boolean isInt = keyboard.hasNextInt();
// Also get rid of the two input prompts, so you don't need to enter 2 numbers,
// of which only the first one would be used.
float number = keyboard.nextFloat();

// Perform other checks

if(isInt)
    System.out.println((int) number + " is an int");
else
    System.out.println(number + " is an float");

这是一个简单的解决方案,将输入视为浮点数,然后分别检查它是 into 还是 float 并将其存储在局部变量中

Scanner keyboard = new Scanner(System.in);
System.out.println("Enter a number: ");

boolean isInt = false;
if (keyboard.hasNextFloat()) {
    float number = keyboard.nextFloat();
    if (number == (int) number) {
        isInt = true;
    }
    boolean isPositive = false;
    if (number > 0.0) {
        isPositive = true;
    }

    if (isInt) {
        int intNumber = (int) number;
        System.out.print(intNumber + " is an integer");
        if (number % 2 == 0)
            System.out.print(" and is even");
        else
            System.out.print(" and is odd");
    } else
        System.out.print(number + " is a floating number");

    if (isPositive)
        System.out.print(" and is positive");
    else
        System.out.print(number + " and is negative");
} else {
    System.out.println("Not a number");
}