2014-02-10 78 views
-2

給定a,b和c,如果其中任何一個可以通過使用另外兩個數字的數學運算形成,則返回true。允許的數學運算是加法,減法,乘法和除法。例如if a=12, b = 15, c = 3 output is true (15-12 = 3). 我試着解決這個問題,雖然解決方案大部分時間工作,但在'0,0,255'或其他類似的情況下不起作用。
我的代碼: -java.lang.NullPointerException錯誤

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; 
}} 

我在做什麼錯的,什麼可以改變都不可能正確這個問題,或者,我只是想錯了嗎?

+0

'NullPointerException'不是'error'。 –

+0

你從哪裏得到NPE? – 2014-02-10 09:52:20

+1

沒有NPE!有一個java.lang.ArithmeticException:/由零 – pL4Gu33

回答

4

我覺得你的問題是,你除以零喜歡這裏:(a/b)a=0 and 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 
+0

是的,我相對較新的Java或編程的事情。它是一個簡單的分配問題,它不應該產生錯誤!我知道有更好的方法來解決這個問題,但是我已經盡我所能地做了,而不需要任何幫助。所以任何幫助糾正上述代碼將不勝感激! – user3289229

0

這是由零問題劃分而不是NPE。

提示:在您進行分區之前,請首先檢查您的DIVISOR

此外,您還可以通過提高代碼:!

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; 
    } 
0

你去那裏,只是用這樣的第一

如果(testcase11檢查除數= 0 & & testcase12 = 0 & & testcase13!= 0)

0

check the deno如果否則爲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; 

回報finalCheck; }}

+0

非常感謝你!你可以通過向我解釋你做了什麼來幫助我嗎? – user3289229

+0

對不起,問題仍然不會爲256 0 12 – user3289229

+0

工作請檢查您的邏輯。我剛剛給你一個想法,就是如何檢查分母的零值,以避免使用三元運算符分割零分,因爲你正在編寫一行代碼。 – Ambuj

相關問題