我想知道如何从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;
但是,当我尝试使用第二个if语句reducedTax = taxedIncome - ((1000 * reductionFactor1) + (500 * reductionFactor2));
中来自第一个if语句的计算值的计算值时,它会给出错误:
变量taxedIncome可能尚未初始化
所以我的问题是,如何从第一个if语句中获取该计算值并在第二个语句中使用它?
答案 0 :(得分:3)
有很多方法可以做到这一点:
在if之前计算并保存,在if。
计算方法也可以通过if
使用赋值返回值的事实
但是,您遇到的问题特别是在使用之前并非所有路径都初始化taxedIncome
。
你告诉计算机,如果某个案例属实,那么taxedIncome = income * 0.18;
它会问,“好吧,那么如果它不是什么应该是什么?”
如果答案不完全相同,请考虑在第一个if中添加else。如果您在此处设置默认值,请考虑在开始时将taxedIncome
设置为默认值。
答案 1 :(得分: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);
}