输入一个负数,偶数或正数和奇数的整数

时间:2014-02-24 12:33:01

标签: java

我正在创建一个程序,询问用户几个整数,其中一个语句询问用户"输入一个负数,偶数或正数和奇数的整数"。我究竟该如何设置这样的问题?到目前为止我有这个。我不知道我应该怎么做,因为我的指示很混乱。这就是我的问题:

4。 询问用户是否为负数,偶数或正数的整数 而奇怪的。使用if语句和复合条件。

import java.util.Scanner;

public class ExerciseFour   
{
public static void main ( String[] argsv )
{


    int choice;
    int choiceTwo;
    int choiceThree;

    Scanner input = new Scanner(System.in);

        System.out.println( "Enter a number between 0 and 10" );
        choice = input.nextInt();


            if ( choice > 0 && choice < 10 ) 
            {   System.out.println( "Valid number" );   
            }
            else 
            {   System.out.println( "Invalid number" );
            return;
            }




        System.out.println( "Enter a number divisible by 2 or 3?" );
        choiceTwo = input.nextInt();

            if ( choiceTwo % 2 == 0 && choiceTwo % 3 == 0 )
            {   System.out.println( "Valid number" );
            }
            else    
            {   System.out.println( "Number not divisible by 2 or 3" );
                return;             
            }

        System.out.println( "Enter an integer that is negative and even or positive and odd (Ex. -2 or 7 )" );
        choiceThree = input.nextInt();

            if ( choiceThree  ) 
            { 
            } 
            else 
            { 
            }

5 个答案:

答案 0 :(得分:3)

((choiceThree > 0) && (choiceThree % 2 == 1)) || ((choiceThree < 0) && (choiceThree % 2 == 0))

以上是您正在寻找的复合条件,这意味着:

(
  (choiceThree > 0)      //positive number / greater than zero
   &&                    // AND
  (choiceThree % 2 == 1) //odd number: (an odd number divided by two has a remainder of 1)
)
||                       // OR
(
 (choiceThree < 0)       //negative number / less than zero
  &&
 (choiceThree % 2 == 0)  //even number (an even number divided by two has a remainder of 0)
)

编辑: %modulo operator a % b的结果是整数除a / b的其余部分。

答案 1 :(得分:3)

关键是使用The modulo operator。偶数可以被2整除而没有余数。所以:

if (choiceThree  < 0) {
    if (choiceThree % 2 == 0) {
        System.out.println ("Valid");
    } else {
        System.out.println ("Invalid");
    }
} else {
    if (choiceThree % 2 != 0) {
        System.out.println ("Valid");
    } else {
        System.out.println ("Invalid");
    }
}

当然,这有点麻烦。表达此布尔逻辑的更优雅方式是使用exclusive or (xor) operator。如果只有一个操作数计算为true,则此运算符返回true

if (choiceThree  > 0 ^ choiceThree % 2 == 0) {
    System.out.println ("Valid");
} else {
    System.out.println ("Invalid");
}

答案 2 :(得分:2)

创建一个返回 true 的方法,如果它是以下场景之一:

public boolean isCorrectInteger(int number){

    if ((number < 0) && (number % 2 == 0)) { //negative and even
        return true;
    } else if((number < 0) && (number % 2 == 1)) { // positive and odd
        return true;
    } else { // other cases
        return false;
    }
}

这可以写成一个更大的条件,我只是为了一个简单的例子将它分成两个。

另外还要考虑到零目前既不是正面也不是负面 - 您可以使用<=>=运算符随意更改。

答案 3 :(得分:2)

我认为第二个问题存在错误

choiceTwo % 2 == 0 && choiceTwo % 3 == 0

你可能想写||代替&&因为你对2 OR 3感到难过; - )

对于你的另一个问题:你有两个布尔表达式可能是真的:

询问用户是否为负数甚至

的整数
(choiceThree < 0 && choiceThree % 2 == 0)

或正面和奇数。

(choiceThree > 0 && choiceThree   % 2 == 1)

使用if语句和复合条件。

所以只需将这些语句与逻辑OR(||)

组合在一起

答案 4 :(得分:1)

试试这个:

 System.out.println( "Enter an integer that is negative and even or positive and odd (Ex. -2 or 7 )" );
 choiceThree = input.nextInt();
 if ( (choiceThree>0 && choiceThree%2==1) || (choiceThree<0 && choiceThree%2==0) ) 
 { 
     System.out.println("Correct");
 } 
 else 
 { 
     System.out.printlnt("ERROR");
 }