0

当我尝试编译它时,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"); 

        }
    }
}
4

6 回答 6

3

局部变量必须用一个值初始化:

int i = 0;
int j = 0;

如果未显式初始化,则只有类 int 变量将设置为 0。

于 2013-10-20T04:56:29.477 回答
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!
}
于 2013-10-20T05:08:41.260 回答
0

只需初始化您的i and j

int i =0, j=0;

因为必须初始化局部变量。

正如 jcoder 在这个相关问题中回答的那样:-Java 中未初始化的变量和成员

对象类型的实例变量默认初始化为 null。默认情况下不初始化对象类型的局部变量,访问未定义变量是编译时错误

javadoc还说:-

局部变量(第 14.4 节、第 14.14 节)必须在使用前通过初始化(第 14.4 节)或赋值(第 15.26 节)显式赋予一个值,其方式可以使用明确赋值规则进行验证

于 2013-10-20T04:57:06.583 回答
0

您必须先初始化ij使用一个值,然后才能执行此操作loop1 = ((x-i)*(x-i))+((y-j)*(y-j)); 例如int i = 0; int j = 0;,或者任何需要它用于您的方程式的值

于 2013-10-20T04:58:01.970 回答
0

i 和 j 的范围仅限于public static void main(String[] args)方法。
在类主体中声明它。
IE。
public class Question2
{
static int i, j;
public static void main(String[] args)
{
i = j = 0;
}
......... your rest of the code
}

于 2013-10-20T05:00:27.870 回答
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              
于 2013-10-20T05:01:41.803 回答