返回错误值的简单 java 程序
simple java program returning incorrect value
你好,我正在复习 Java 练习。我有这个非常简单的程序:
有两个 int 值,以及一个布尔变量。
i) 如果这些值之一为负,一个为正,程序将 return 为真。
ii) 但是,如果 boolean 变量为真,则程序只能 return 如果两个 int 值都是负数则为真。
我已经用一堆 int 值对此进行了测试,但是一旦我为该方法提供值 (1, -1) 并将布尔值设置为 true,程序似乎就会中断。任何帮助或解释将不胜感激。
public static void main(String[] args) {
System.out.println(posNeg(1,-1,true));
}
public static String posNeg(int a, int b, boolean negative){
if(negative && (a<0 && b<0)){
return "true";
}else if(!negative && (a<0 && b>0) || (a>0 && b<0)){
return "true";
}
return "false";
}
您的代码因 &&
.
而中断
将||
条件括在方括号中:
public static void main(String[] args) {
System.out.println(posNeg(1,-1,true));
}
public static String posNeg(int a, int b, boolean negative){
if(negative && (a<0 && b<0)){
return "true";
}else if(!negative && ((a<0 && b>0) || (a>0 && b<0))){
return "true";
}
return "false";
}
&& 的优先级高于 || , 所以在 else if 条件下即
!negative && (a<0 && b>0) || (a>0 && b<0)
首先对这个条件求值 !negative && (a<0 && b>0) 然后用 res || 求值结果(a>0 && b<0).
在你的情况下,我猜你想先评估 ||然后 && ,所以只需在 !negative && ( (a<0 && b>0) || (a>0 && b<0)) 中放一个这样的括号,以便首先评估括号内的条件,然后计算结果用 &&
评估
public class Main
{
public static void main(String[] args) {
System.out.println(posNeg(1,-1,true));
}
public static String posNeg(int a, int b, boolean negative){
if(negative && (a<0 && b<0)){
return "true";
}else if(!negative && ((a<0 && b>0) || (a>0 && b<0))){
return "true";
}
return "false";
}
}
public static void main(String[] args) {
System.out.println(posNeg(1,-1,false));
}
public boolean posNeg(int a, int b, boolean negative) {
如果(否定)
return (a < 0 && b < 0);
别的
return ((a < 0 && b > 0) || (a > 0 && b < 0));
}
你好,我正在复习 Java 练习。我有这个非常简单的程序: 有两个 int 值,以及一个布尔变量。
i) 如果这些值之一为负,一个为正,程序将 return 为真。
ii) 但是,如果 boolean 变量为真,则程序只能 return 如果两个 int 值都是负数则为真。
我已经用一堆 int 值对此进行了测试,但是一旦我为该方法提供值 (1, -1) 并将布尔值设置为 true,程序似乎就会中断。任何帮助或解释将不胜感激。
public static void main(String[] args) {
System.out.println(posNeg(1,-1,true));
}
public static String posNeg(int a, int b, boolean negative){
if(negative && (a<0 && b<0)){
return "true";
}else if(!negative && (a<0 && b>0) || (a>0 && b<0)){
return "true";
}
return "false";
}
您的代码因 &&
将||
条件括在方括号中:
public static void main(String[] args) {
System.out.println(posNeg(1,-1,true));
}
public static String posNeg(int a, int b, boolean negative){
if(negative && (a<0 && b<0)){
return "true";
}else if(!negative && ((a<0 && b>0) || (a>0 && b<0))){
return "true";
}
return "false";
}
&& 的优先级高于 || , 所以在 else if 条件下即 !negative && (a<0 && b>0) || (a>0 && b<0) 首先对这个条件求值 !negative && (a<0 && b>0) 然后用 res || 求值结果(a>0 && b<0).
在你的情况下,我猜你想先评估 ||然后 && ,所以只需在 !negative && ( (a<0 && b>0) || (a>0 && b<0)) 中放一个这样的括号,以便首先评估括号内的条件,然后计算结果用 &&
评估public class Main
{
public static void main(String[] args) {
System.out.println(posNeg(1,-1,true));
}
public static String posNeg(int a, int b, boolean negative){
if(negative && (a<0 && b<0)){
return "true";
}else if(!negative && ((a<0 && b>0) || (a>0 && b<0))){
return "true";
}
return "false";
}
}
public static void main(String[] args) {
System.out.println(posNeg(1,-1,false));
}
public boolean posNeg(int a, int b, boolean negative) { 如果(否定) return (a < 0 && b < 0); 别的 return ((a < 0 && b > 0) || (a > 0 && b < 0)); }