【问题标题】:How to check if user input is a float or int in java?如何检查用户输入是java中的float还是int?
【发布时间】:2020-09-03 00:12:11
【问题描述】:

我需要编写一个 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");

    }
}

【问题讨论】:

  • 有点题外话,但只有整数可以被认为是奇数或偶数。

标签: java floating-point integer java.util.scanner


【解决方案1】:

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

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

【讨论】:

  • +1 这个不错的答案。只是两个反馈:(1)不要关闭Scanner for System.in,因为它也会关闭System.in,并且无法再次打开它。如果程序必须处理进一步的输入,这可能是一个问题。 (2) 将 number + " and is negative" 更改为 " and is negative" 以获得负数的干净输出。除了干净之外,它还可以避免混淆,例如如果你现在输入-10,它会显示:-10 is an integer and is even-10.0 and is negative,不仅看起来难看而且很混乱。
【解决方案2】:

当您调用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");

【讨论】:

  • 这是不正确的,因为每个int 都是float。 else 永远不会到达。
  • @HarshalParekh 你是对的,应该更加注意这一点。我已将其更改为hasNextInt,应该可以解决问题。
猜你喜欢
  • 1970-01-01
  • 2011-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-11
  • 1970-01-01
相关资源
最近更新 更多