[英]Why doesn't the compiler allow this?
因为我拼命寻找解决方案 3 个小时,但没有找到任何东西,所以我要在这里尝试一下。
public static void Assemble(boolean isAnnuityLoan, double K, double P, int N) {
double loan = K;
int year = 1;
Output.PrintHeader();
if (isAnnuityLoan) {
double *rpy* = Calculation.AnnRatePerYear(K, P, N);
} else {
double *T* = Calculation.AmortRate(N, K);
}
for (int x = 0; x < N; x++) {
double I = Calculation.Interest(loan, P);
if (isAnnuityLoan) {
double T = Calculation.AnnAmortRate(**rpy**, loan, P);
} else {
double rpy = Calculation.RatePerYear(loan, P, **T**);
}
Output.PrintTableLine(year, loan, I, **T**, **rpy**);
loan = loan - **T**;
year++;
System.out.println("\n");
}
这就是代码。 哦很酷看起来格式化在代码段中不起作用。 无论如何,问题是,编译器将斜体变量( K和rpy )标记为未使用,将粗体(双星)标记为未找到。 现在这对我来说没有任何意义,因为让我们跟踪两条路径。
isAnnuityLoan 是假的。 它将计算 T,然后进入 for 循环,由于 isAnnuityLoan 仍然为 false,因此将触发 else 语句并计算 rpy。
反之亦然,首先计算 rpy,循环中的 T,因此两个变量都应该可用。
Buuuut 他们不是。 我不知道为什么。 现在问题出在哪里?
你的帮助是非常受欢迎的,它将帮助我不要在睡梦中对此进行猜谜。
例子 :
//define var
int x;
if(test){
//initialize it here
x = 1;
} else {
//or here
x = 2;
}
//use it here
System.out.println(x);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.