我和j没有被初始化。但我已经写过int i和int j。怎么了

时间:2013-10-20 04:55:18

标签: java initialization geometry local-variables

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

        }
    }
}

6 个答案:

答案 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)

您需要先使用值初始化ij,然后才能执行此操作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变量ij。在您的代码中的某个时刻,您将不得不在使用它们之前初始化它们。

int i, j;
String s = "Hello"
if (s.equals("Hello")){
    i = 0;
    j = 0;
    // Horray! We can now use i and j!
}