java.lang.NullPointerException错误

java.lang.NullPointerException错误,java,Java,给定a、b和c,如果其中任何一个可以通过使用其他两个数字的数学运算形成,则返回true。允许的数学运算有加法、减法、乘法和除法。例如如果a=12,b=15,c=3,则输出为真(15-12=3)。 我试图解决这个问题,虽然解决方案在大多数情况下都有效,但在'0,0255'或类似的情况下,它不起作用我的代码:- public class CheckCombination { static int testcase11 = 0; static int testcase12 = 0;

给定a、b和c,如果其中任何一个可以通过使用其他两个数字的数学运算形成,则返回true。允许的数学运算有加法、减法、乘法和除法。例如
如果a=12,b=15,c=3,则输出为真(15-12=3)。
我试图解决这个问题,虽然解决方案在大多数情况下都有效,但在
'0,0255'
或类似的情况下,它不起作用
我的代码:-

public class CheckCombination {

    static int testcase11 = 0;
    static int testcase12 = 0;
    static int testcase13 = 512;

    public static void main(String args[]){
        CheckCombination testInstance = new CheckCombination();
        boolean result = testInstance.combine(testcase11,testcase12,testcase13);
        System.out.println(result);
    }

    //write your code here
    public boolean combine(int a, int b,int c){
        boolean checkComb1 = a==(b/c)||a==(b+c)||a==(b-c)||a==(b*c)||a==(c-b)||a==(c/b);
        boolean checkComb2 = b==(a/c)||b==(a+c)||b==(a-c)||b==(c*a)||b==(c-a)||b==(a+c);
        boolean checkComb3 = c==(a/b)||c==(b/a)||c==(a-b)||c==(b-a)||c==(a*b)||c==(a+b);
        boolean finalCheck = checkComb1||checkComb2||checkComb3;
return finalCheck;
}}

我做错了什么?什么样的改变可能会纠正这个问题,或者我只是想错了?

我想你的问题是你被零除了,就像这里:
(a/b)
a=0和b=0


因此,您需要检查其中一个参数是否为0,以便猜测其他参数,如:

If one of the parameters = 0, if the others are equal, return true else return false
If two of the parameters = 0, it will return false and doesn't matter what the last value is
If the all parameters = 0, you will return true

这是一个被零除的问题,而不是NPE

提示:除法之前,请先检查除数

此外,您还可以通过以下方式改进代码:

    public boolean combine(int a, int b, int c) {
        boolean check = checkIfOk(a,b,c);
        check = checkIfOk(b,a,c);
        check = checkIfOk(c,a,b);
        return check;
    }

    public boolean checkIfOk(int a, int b, int c) {
        boolean ret = a==(b+c) || a==(b-c) || a==(b*c);
        if(c != 0) ret = ret || a==(b/c);
        return ret;
    }

好了,先用这样的方法检查除数

if(testcase1!=0&&testcase12!=0&&testcase13!=0)


检查分母是否为零,否则会出现被0除的异常

公开课考试{

static int testcase11 = 0;
static int testcase12 = 0;
static int testcase13 = 512;

public static void main(String args[]){
    Test testInstance = new Test();
    boolean result = testInstance.combine(testcase11,testcase12,testcase13);
    System.out.println(result);
}

//write your code here
public boolean combine(int a, int b,int c){

    boolean checkComb1 = (c!=0)?a==(b/c):false||a==(b+c)||a==(b-c)||a==(b*c)||a==(c-b)||(b!=0)?a==(c/b):false;
    boolean checkComb2 = (c!=0)?b==(a/c):false||b==(a+c)||b==(a-c)||b==(c*a)||b==(c-a)||b==(a+c);
    boolean checkComb3 = (b!=0)?c==(a/b):false||(a!=0)?c==(b/a):false||c==(a-b)||c==(b-a)||c==(a*b)||c==(a+b);
    boolean finalCheck = checkComb1||checkComb2||checkComb3;
返回最终检查;
}}
NullPointerException
不是一个
错误
。您从哪里获得NPE?没有NPE!有一个java.lang.arithmetricException:/by Zero我不知道你在哪里可以得到NPE。如果你用谷歌搜索,你会注意到这个网站上99%的人都在发布他们的NPE/各种异常。学习如何调试。从读取堆栈跟踪开始,它带有一个行号。是的,我对java或编程相对较新。这是一个简单的作业问题,不应该产生错误!我知道有更好的方法来解决这个问题,但我在没有任何帮助的情况下尽了最大努力。因此,任何关于纠正上述代码的帮助都将不胜感激!非常感谢你!你能帮我解释一下你做了什么吗?请检查你的逻辑。我刚刚给了你一个想法,当你在一行中写代码时,如何用零值检查分母,以避免用三元运算符除以零。