新人纠结的小疑点
新人纠结的小问题
public class Lake {
public static void main(String[] args) {
int a = 0;
int b = 0;
int c = 0;
int count = 0;
System.out.println("1~1000内的水仙花数为:");
for (int i=99; i<1000; i++) {
a = i/100;
b = (i-a*100)/10;
c = (i-a*100-b*10);
if (i== (a*a*a+b*b*b+c*c*c)) {
System.out.print(i+"\t");
count++;
}
}
System.out.println("\n一共有"+count+"个");
}
}
在这个程序里面 为什么 a b c的初始化变量可以忽略, count就不行啊
count不也是成员变量么
------解决方案--------------------
其实,如果a,b,c,count 都会报未被赋值的错误(如果这些值在未初始化的状态下)
楼主这段代码,其实a,b,c这几个临时变量已经赋值过了
------解决方案--------------------
只有count在使用的时候还没有赋值
------解决方案--------------------
a b c count 都是局部变量,不是成员变量, a b c初始值可以忽略,是因为后面直接有赋值语句,而count++,这个是访问后赋值,但是在此之前,count 却没有初始化过。
------解决方案--------------------
用和用是不一样的,abc都是直接赋值,是写操作,前面即使没赋值过,这个操作都没有问题
但count的用法和abc是不一样的,count++实际上隐藏着一个读操作,就你这个例子来说,和count = count+1;相同
报错实际上就是报的这个读操作的时候,没有赋值过
------解决方案--------------------
a = i/100;
b = (i-a*100)/10;
c = (i-a*100-b*10);
这里就是赋值啊,你的count没有直接赋值,是Null,null是不可以自加的
public class Lake {
public static void main(String[] args) {
int a = 0;
int b = 0;
int c = 0;
int count = 0;
System.out.println("1~1000内的水仙花数为:");
for (int i=99; i<1000; i++) {
a = i/100;
b = (i-a*100)/10;
c = (i-a*100-b*10);
if (i== (a*a*a+b*b*b+c*c*c)) {
System.out.print(i+"\t");
count++;
}
}
System.out.println("\n一共有"+count+"个");
}
}
在这个程序里面 为什么 a b c的初始化变量可以忽略, count就不行啊
count不也是成员变量么
------解决方案--------------------
其实,如果a,b,c,count 都会报未被赋值的错误(如果这些值在未初始化的状态下)
楼主这段代码,其实a,b,c这几个临时变量已经赋值过了
a = i/100;
b = (i-a*100)/10;
c = (i-a*100-b*10);
------解决方案--------------------
只有count在使用的时候还没有赋值
------解决方案--------------------
a b c count 都是局部变量,不是成员变量, a b c初始值可以忽略,是因为后面直接有赋值语句,而count++,这个是访问后赋值,但是在此之前,count 却没有初始化过。
------解决方案--------------------
用和用是不一样的,abc都是直接赋值,是写操作,前面即使没赋值过,这个操作都没有问题
但count的用法和abc是不一样的,count++实际上隐藏着一个读操作,就你这个例子来说,和count = count+1;相同
报错实际上就是报的这个读操作的时候,没有赋值过
------解决方案--------------------
a = i/100;
b = (i-a*100)/10;
c = (i-a*100-b*10);
这里就是赋值啊,你的count没有直接赋值,是Null,null是不可以自加的