【问题标题】:Java - Check if input is a positive integer, negative integer, natural number and so on.Java - 检查输入是否为正整数、负整数、自然数等。
【发布时间】:2013-11-14 23:21:08
【问题描述】:

Java 中是否有任何内置方法,您可以在其中找到用户输入的类型,无论是正数还是负数等?下面的代码不起作用。我正在尝试找到一种方法来输入可以在 if 语句中执行的任何内置方法。

import java.util.Scanner;

public class Compare {

    public static void main(String[] args) { 

        Scanner input = new Scanner(System.in);

        System.out.print("Enter a number: ");
        int number = input.nextInt();

        if(number == int) 
            System.out.println("Number is natural and positive.");
    }
}

【问题讨论】:

  • 大部分这些都可以通过非常短的代码来实现,例如 variable>0, variable

标签: java


【解决方案1】:

如果您真的必须避免使用运算符,请使用Math.signum()

返回参数的符号函数;如果参数是零 零,如果参数大于零,则为 1.0,如果参数大于零,则为 -1.0 小于零。

编辑:根据 cmets,这仅适用于 double 和 float 值。对于整数值,您可以使用以下方法:

Integer.signum(int i)

【讨论】:

  • Math.signum() 仅适用于双精度或浮点值。该问题特别提到了整数。
【解决方案2】:

对于整数,您可以使用Integer.signum()

返回指定 int 值的符号函数。 (如果指定的值为负,则返回值为 -1;如果指定的值为负,则返回值为 0 指定值为零;如果指定的值为正,则为 1。)

【讨论】:

    【解决方案3】:

    如何使用以下内容:

    int number = input.nextInt();
    if (number < 0) {
        // negative
    } else {
       // it's a positive
    }
    

    【讨论】:

    • 第二个if 是多余的...如果需要上下文块,只需使用else { /*positive*/ };或者取消else,如果你不需要它,它完全是上下文块:if (number &lt; 0) { /*negative*/ } /*positive*/
    • @devdanke 然而Java有signed zeroes
    • @bishop 哇。很好的发现!
    【解决方案4】:

    (你应该像Else-If 声明来检查三种不同的状态(正、负、0)

    这里是一个简单的例子(排除非整数值的可能性)

      import java.util.Scanner;
    
      public class Compare {
    
       public static void main(String[] args) { 
    
        Scanner input = new Scanner(System.in);
    
        System.out.print("Enter a number: ");
        int number = input.nextInt();
    
        if( number == 0)
        { System.out.println("Number is equal to zero"); }
        else if (number > 0)
        { System.out.println("Number is positive"); }
        else 
        { System.out.println("Number is negative"); }
    
    
      }
     }
    

    【讨论】:

    • 两种情况下输出不正确;此行int number = input.nextInt(); 导致 -1 和 0 的输入输出错误
    【解决方案5】:

    使用如下代码。

    if(number >=0 ) {
                System.out.println("Number is natural and positive.");
    }
    

    【讨论】:

      【解决方案6】:

      您可以使用if(number &gt;= 0)。您使用 int number = input.nextInt(); 的事实确保它必须是整数。

      【讨论】:

        猜你喜欢
        • 2016-05-19
        • 2014-11-29
        • 2012-09-23
        • 2013-11-16
        • 1970-01-01
        相关资源
        最近更新 更多