当我尝试编译它时,Eclipse说i和j尚未初始化。我究竟做错了什么?问题是关于创建一个圆圈。
public class Question2
{
public static void main(String[] args) {
int x = 14;
int y = 8;
int radius = 5;
DrawMeACircle(x,y,radius);
}
public static void DrawMeACircle(int x, int y, int radius)
{
int i, j;
int gridsize = 99;
int loop1;
loop1 = ((x-i)*(x-i))+((y-j)*(y-j));
// The problem is here (in the line above), it say i and j has not been initialized.
int loop2 = loop1-radius*radius;
int c = radius-1;
for (i=0; i<gridsize; i++)
{
//System.out.print("#");
for (j=0; j<gridsize; j++)
{
if(loop2 >=0 && loop2<= c )
{System.out.print("#");}
else
{System.out.print(" ");}
}
System.out.print("\n");
}
}
}
答案 0 :(得分:3)
必须使用值
初始化局部变量int i = 0;
int j = 0;
如果未明确初始化,则只有类int变量将设置为0.
答案 1 :(得分:0)
只需初始化您的i and j
int i =0, j=0;
因为必须初始化局部变量。
正如jcoder在这个相关问题中回答: - Uninitialized variables and members in Java
对象类型的实例变量默认为初始化为 空值。 默认情况下不初始化对象类型的局部变量 并且访问未定义的变量是编译时错误。
javadoc 也说: -
必须明确赋予局部变量(§14.4,§14.14)一个值 在使用之前,通过初始化(§14.4)或赋值 (§15.26),可以使用明确规则进行验证 分配
答案 2 :(得分:0)
您需要先使用值初始化i
和j
,然后才能执行此操作loop1 = ((x-i)*(x-i))+((y-j)*(y-j));
例如int i = 0; int j = 0;
或者您需要的任何值
答案 3 :(得分:0)
i和j的范围仅限于public static void main(String[] args)
方法。
在课堂上宣布它。
即。
public class Question2
{
static int i, j;
public static void main(String[] args)
{
i = j = 0;
}
......... your rest of the code
}
答案 4 :(得分:0)
声明一个变量意味着保留内存空间来存储一个你已经做过的值,但是,当你要使用一个变量时,你的IDE(在这个特殊情况下是eclipse)找不到你所在的行。变量初始值(或初始化所述变量的位置)因此,您应该在任何类型的操作中使用变量之前设置第一个值。
int x;
system.out.println(x+1); // this line would cause the exception you got because x has not
// an initial value
x=0;
system.out.println(x+1); // now x has an "initial" value and there should be no exception
答案 5 :(得分:0)
当您尚未初始化时,您正在使用int
变量i
和j
。在您的代码中的某个时刻,您将不得不在使用它们之前初始化它们。
int i, j;
String s = "Hello"
if (s.equals("Hello")){
i = 0;
j = 0;
// Horray! We can now use i and j!
}