Java 如何获取在if语句中计算的值并在if语句之外使用它?

Java 如何获取在if语句中计算的值并在if语句之外使用它?,java,variables,if-statement,Java,Variables,If Statement,我想知道如何从if语句中获取计算值,并将该值用于其他内容。这只是我代码的一部分,我需要帮助: double taxedIncome; double reducedTax; int reductionFactor1 = numberSchool; int reductionFactor2 = numberChildren - numberSchool; if (income == 10000 && housingCosts > 800

我想知道如何从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语句中第一个if语句的计算值时,
reducedTax=taxedIncome-((1000*reducedFactor1)+(500*reducedFactor2)),它给了我一个错误:

变量taxedIncome可能尚未初始化


因此,我的问题是,如何从第一个if语句中获取计算值并在第二个if语句中使用它?

有多种方法可以做到这一点:

  • 在if之前计算并保存,在if中重用

  • 在if也可以调用的方法中计算

  • 使用赋值返回值这一事实

但是,您遇到的问题是,并非所有路径在使用之前都会初始化
taxedIncome

你告诉电脑,如果某个案件是真的,那么
taxedIncome=income*0.18它会问,“好吧,如果不是,它应该是什么?”


如果答案不是完全相同的,考虑将另一个添加到第一个IF中。如果在这里设置默认值,请考虑将代码< >税项收入> /代码>设置为开始时的默认值。

< p>在声明变量时初始化变量是一个好的做法。通常,您希望将数字初始化为零

在您的情况下,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);
    }
double taxedIncome=0;//初始化为零或某个默认值
双还原最大值=0;//初始化为零或某个默认值
int reductionFactor1=numberSchool;
int reductionFactor2=numberChildren-numberSchool;
如果(收入=10000和住房成本>8000 | |收入<10000){
所得税=收入*0.18;
}否则{
//若初始化的值为零,若If语句结果为false,则可能希望将其默认为其他值。
//税收收入=???
}
如果(住房成本<6000&&numberChildren>=2&&numberSchool>=1){
reducedTax=税收收入-((1000*扣减系数1)+(500*扣减系数2));
系统输出打印LN(减少的最大值);
}

提示:如果代码未输入
,会发生什么情况?@boristesspider我现在明白你的意思了。如果用户输入的值不符合if语句的条件,我应该做一个else语句。所以我所做的是在一个else语句中做
taxedIncome=income
,我刚刚修改了它,现在它是
if(income==10000&&housingCosts>8000 | | income<10000){taxedIncome=income*0.18;}else{taxedIncome=income}
,它解决了这个问题。你认为这样做对吗?行得通。但听起来很像一个默认值。考虑把它设置在开始时,你的代码将对其他特殊情况的添加开放。所以你认为我应该设置<代码>双重征税收入=收入;<代码>在开始时?它使您的代码可以添加更多案例。默认值不应隐藏在if结构中。一开始就大声自豪地说出来。好的,谢谢你的帮助,它现在起作用了。如果我遇到更多的问题,我一定会更新这个问题。我添加了一个else语句,就像我刚才说的
taxedIncome=income
一样,现在是
If(income==10000&&housingCosts>8000 | | income<10000){taxedIncome=income*0.18;}else{taxedIncome=income;}
你认为这样做对吗?
    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);
    }