我的代码有问题:我的程序将绘制一些特定的矩形。因此,我使用循环来计算新矩形的重复大小。
int c = readInt("Counter: ");
double width1 = readDouble("Width: ");
for (int i = 0; i <= c; i++) {
double height1;
double lastwidth;
double lastheight;
double topleftx;
double toplefty;
if ((i == 1) && (i != 0)) {
topleftx = 0;
toplefty = 0;
height1 = width1 / 1.618;
GRect rect = new GRect(topleftx, toplefty, width1, height1);
add(rect);
lastwidth = width1;
lastheight = height1;
}
;
if ((i == 2) || ((i - 2) % 4 == 0) && (i != 0)) {
height1 = lastheight;
width1 = height1 / 1.618;
toplefty = toplefty;
topleftx = topleftx + lastwidth - width1;
GRect rect = new GRect(topleftx, toplefty, width1, height1);
add(rect);
lastwidth = width1;
lastheight = height1;
}
}
但是我收到一些类似的错误消息:
本地变量lastheight可能尚未初始化。
在第二个循环的height1 = lastheight;
行中。
但是我已经在第一个循环中初始化了变量。就像我的变量忘记了我在第一个循环中赋予它的值...?!
但是为什么呢?我该如何解决呢?
感谢您的帮助。 :)
答案 0 :(得分:0)
尝试首先为它们提供默认值:
double height1 = 0.0;
double lastwidth= 0.0;
double lastheight=0.0;
double topleftx=0.0;
double toplefty=0.0;
答案 1 :(得分:0)
在声明时使用默认值初始化height1变量。
因为编译器会检查所有情况,例如如果首先if语句永远不会运行会发生什么,在这种情况下,height1变量将未初始化...
因此,在这种情况下,请始终使用一些默认值或哑数值来初始化变量。例如。
double height1 = 0.0;