31

Is there any in-built method in Java where you can find the user input's type whether it is positive, or negative and so on? The code below doesn't work. I am trying to find a way to input any in-built method that can do it at the if statement.

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.");
    }
}
1
  • 8
    Most of these are possible with insanely short pieces of code, eg variable>0, variable<0 Commented Nov 4, 2013 at 10:47

6 Answers 6

46

If you really have to avoid operators then use Math.signum()

Returns the signum function of the argument; zero if the argument is zero, 1.0 if the argument is greater than zero, -1.0 if the argument is less than zero.

EDIT : As per the comments, this works for only double and float values. For integer values you can use the method:

Integer.signum(int i)

Sign up to request clarification or add additional context in comments.

1 Comment

Math.signum() works only for double or float values. The question specifically mentions Integer.
31

What about using the following:

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

4 Comments

The second if is redundant... Simply use else { /*positive*/ } if you need the context block; or do away with the else and it's context block entirely if you don't need it: if (number < 0) { /*negative*/ } /*positive*/
0 is not positive or negative. mathforum.org/library/drmath/view/58735.html
@devdanke Yet Java has signed zeroes.
@bishop Wow. Nice find!
7

(You should you as Else-If statement to check the for the three different state (positive, negative, 0)

Here is a simple example (excludes the possibility of non-integer values)

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


  }
 }

1 Comment

incorrect output for two cases; this line int number = input.nextInt(); cause the wrong output for inputs of -1 and 0
3

For integers you can use Integer.signum()

Returns the signum function of the specified int value. (The return value is -1 if the specified value is negative; 0 if the specified value is zero; and 1 if the specified value is positive.)

Comments

0

Use like below code.

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

Comments

-1

You could use if(number >= 0). The fact that you use int number = input.nextInt(); makes sure that it has to be an Integer.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.