标题: 求解!!!! [打印本页] 作者: 胡宝林 时间: 2012-6-7 16:55 标题: 求解!!!! public class D {
private static long x = 0;
public D() {
x++;
}
public static long getX() {
return x;
}
}
public class F {
public static void main(String[] args) {
for (int i = 0; i < 100; i++)
D d = new D();
System.out.println(D.getX());
}
}
//循环创建100个D对象,那么D类的x会累加100次,打印x的值应该是100,但是程序却根本不能编译,哪里出错了,求解!!!!作者: 刘克方 时间: 2012-6-7 17:00 本帖最后由 刘克方 于 2012-6-7 17:14 编辑
public class D { //文件中只能有一个public 类,所以把此处 的public去掉
private static long x = 0;
public D() {
x++;
}
public static long getX() {
return x;
}
}
public class F {
public static void main(String[] args) {
for (int i = 0; i < 100; i++) //这儿少{};你加上以后就可以了,
D d = new D();
System.out.println(D.getX());
}
}作者: 孙峰 时间: 2012-6-7 17:06
在同一个java文件中吧?只能放一个public 类, 将“public class D {“中的 public 去掉。
然后for 循环加上大括号 作者: 黑马任雪刚 时间: 2012-6-7 17:15 本帖最后由 黑马任雪刚 于 2012-6-7 17:35 编辑
你的代码:public class D {
private static long x = 0;
public D() {
x++;
}
public static long getX() {
return x;
}
}
public class F {
public static void main(String[] args) {
for (int i = 0; i < 100; i++)
D d = new D();//这儿出错了,当你在循环创建新对象时(这时是每创建一个引用就指向一个实体),所有的对象引用名都是:d,出现了对象名重复,所以会出现编译时的错误。
System.out.println(D.getX());
}
}
修改后的代码:class D {//把public去掉
private static long x = 0;
public D() {
x++;
}
public static long getX() {
return x;
}
}
public class F {
public static void main(String[] args) {
D d;//现在循环的外面建立对象的引用,这样一个引用是可以指向多个对象实体的,避免了上述的问题
for (int i = 0; i < 100; i++)
d = new D();
System.out.println(D.getX());
}
}
作者: 胡宝林 时间: 2012-6-7 17:22
黑马任雪刚 发表于 2012-6-7 17:15
你的代码:public class D {
private static long x = 0;
public D() {
作者: 陌花╮有意、 时间: 2012-6-8 16:25
程序存在两个问题
1.一个文件只能有一个类是public的
2.循环中定义的变量重复
可以这样修改:
public class F {
public static void main(String[] args) {
D d = null;
for (int i = 0; i < 100; i++)
d = new D();
System.out.println(D.getX());
}
}