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