Help with Java Homework

I have this task that I have tried. But when I enter 1, it should not produce any result, since 1 is> 0 and 1 is not equal, but I still get the output as:

Enter a +ve number
1
You entered 1
I'd asked for a +ve number :)

.

 import java.util.Scanner;
 class Main {
    public static void main(String[] args) {
      Scanner input = new Scanner(System.in);
      System.out.println("Enter a +ve number");
      int number = input.nextInt();
      System.out.println("You entered "+number);
      if(number > 0)
         if(number %2 == 0)
             System.out.println("Number"+number+" is even and +ve");
         else
             System.out.println("I'd asked for a +ve number :)");
     }
 }
+5
source share
8 answers

Otherwise, your tag will belong to 2nd if , not 1st if, as the indentation shows.

if(cond1)
 if(cond2) 
else   // this else belongs to 2nd if not 1st if.

matches with:

if(cond1) {
 if(cond2) {
 } else {
 }
}

This is because the Java grammar says that else belongs to the nearest unsurpassed, if it can belong .

If you want to combine else with the first, if you need to use parentheses like:

if(cond1) {
 if(cond2) {
 } 
} else { 
}
+9
source

, , : , {}.

+8

, , ifs :

if(number > 0)
    if(number %2 == 0)
        System.out.println("Number"+number+" is even and +ve");
    else
        System.out.println("I'd asked for a +ve number :)");

, ? , :

if(number > 0) {
    if(number %2 == 0) {
        System.out.println("Number"+number+" is even and +ve");
    }
} else {
    System.out.println("I'd asked for a +ve number :)");
}
+5

1:

Enter a +ve number
1
You entered 1
I'd asked for a +ve number :)

,

if (number > 0)

number == 1,

if (number % 2 == 0)

number == 1, else:

System.out.println("I'd asked for a +ve number :)")

:

Scanner input = new Scanner(System.in);
System.out.println("Enter a +ve number");
int number = input.nextInt();
System.out.println("You entered " + number);
if (number > 0) {
    if (number % 2 == 0)
        System.out.println("Number" + number + " is even and +ve");
} else {
    System.out.println("I'd asked for a +ve number :)");
}
+4

(, eclipse) paranthesis if (number > 0) statement, if.

0

I threw your code into Netbeans and automatically formatted it for readability. Is this your intended logical flow? Because this is how the compiler sees that your if-expressions are aligned / embedded.

import java.util.Scanner;

public class Main
{


    public static void main(String[] args)
    {
        Scanner input = new Scanner(System.in);
        System.out.println("Enter a +ve number");
        int number = input.nextInt();
        System.out.println("You entered " + number);

        if (number > 0)
        {
            if (number % 2 == 0)
            {
                System.out.println("Number" + number + " is even and +ve");
            } 
            else
            {
                System.out.println("I'd asked for a +ve number :)");
            }
        }
    }

}
0
source

1% 2 == 1, so it’s clear that it enters the else branch

0
source

because your else statement says that even if it doesn't say "I asked + ve number"

move it from an if statement like this

     if(number > 0)
     {
         if(number %2 == 0)
         {
             System.out.println("Number"+number+" is even and +ve");
         }
     }
     else
     {
         System.out.println("I'd asked for a +ve number :)");
     }
0
source

All Articles