2015-04-12 121 views
2

我想知道如何從if語句中獲取計算值並將該值用於其他內容。這是我的代碼只是一部分,我需要幫助的部分:如何獲取if語句中計算的值並在if語句之外使用它?

double taxedIncome; 
    double reducedTax; 
    int reductionFactor1 = numberSchool; 
    int reductionFactor2 = numberChildren - numberSchool; 

    if (income == 10000 && housingCosts > 8000 || income < 10000) { 
     taxedIncome = income * 0.18; 
    } 

    if (housingCosts < 6000 && numberChildren >= 2 && numberSchool >= 1) { 
     reducedTax = taxedIncome - ((1000 * reductionFactor1) + (500 * reductionFactor2)); 
     System.out.println(reducedTax); 
    } 

正如你可以在第一個if語句看,它說,如果收入(這是一個用戶輸入的值)等於10000和住房成本(也是用戶輸入的)大於8000,或者如果收入低於10000,那麼收入將乘以0.18。

taxedIncome = income * 0.18; 

然而,當我嘗試使用它從第一,如果在第二份聲明,如果聲明reducedTax = taxedIncome - ((1000 * reductionFactor1) + (500 * reductionFactor2));,它給我的錯誤納稅收入計算值:

variable taxedIncome might have not been initialized

所以我的問題是,我怎麼能從第一個if語句中得到這個計算出來的值,並在第二個語句中使用呢?

+2

提示:當代碼不進入'if'發生了什麼? –

+0

@BoristheSpider我明白你的意思了。如果用戶輸入的值不符合if語句的條件,我應該做一個else語句。所以我所做的就是在另一個聲明中使'taxedIncome = income'。 –

回答

3

有許多方法可以做到這一點:

  • 計算並在如果,如果,再次使用之前保存。

  • 計算的方法也可以由if

  • 稱爲使用該分配返回值

然而事實上,您遇到的問題,具體而言,是不是所有的路徑在使用前初始化爲taxedIncome

你在告訴計算機,如果某種情況是真的,那麼taxedIncome = income * 0.18;它問:「好吧,如果不是,它會怎麼樣?」

如果答案不完全相同,請考慮向第一個if添加else。如果您在此輸入默認值,請考慮在開始時將taxedIncome設置爲默認值。

+0

我剛剛改變了它,現在它是'if(income == 10000 && housingCosts> 8000 || income <10000){taxyIncome = income * 0.18; }其他{ taxedIncome =收入; }'它已經解決了這個問題。你認爲這是正確的做法嗎? –

+0

工作。但聽起來很像默認值。考慮在開始時將其設置爲該值,並且您的代碼將打開以添加其他特殊情況。 – CandiedOrange

+0

所以你認爲我應該在開始時設置「雙重徵稅=收入」; –

1

在聲明它們時初始化變量是個好習慣。通常情況下,您希望將數字初始化爲零。

對你來說,它可能是您的if語句可能不會執行這樣taxedIncome可能從未被賦值

double taxedIncome = 0; // Initialize to zero or some default value 
    double reducedTax = 0; // Initialize to zero or some default value 
    int reductionFactor1 = numberSchool; 
    int reductionFactor2 = numberChildren - numberSchool; 

    if (income == 10000 && housingCosts > 8000 || income < 10000) { 
     taxedIncome = income * 0.18; 
    } else { 
     // If you initialized taxedIncome to zero you may want to default it to some other value if you if statement results in false. 
     // taxedIncome = ??? 
    } 

    if (housingCosts < 6000 && numberChildren >= 2 && numberSchool >= 1) { 
     reducedTax = taxedIncome - ((1000 * reductionFactor1) + (500 * reductionFactor2)); 
     System.out.println(reducedTax); 
    } 
+0

我已經添加了一個else語句,就像你在我說的那樣'taxedIncome = income',所以現在是'if(income == 10000 && housingcosts> 8000 || income <10000){taxyIncome = income * 0.18; }其他{ taxedIncome =收入; 「你認爲這是正確的做法嗎? –