在带有数组的循环中创建变量时出现Java编译错误
我正在自学Java,目前正在学习数组。 我试着用一些相当简单的东西来练习
public static void main(String[] args) {
String[] names = {Max, Bella, Jack};
for (int i = 0; i < names.length; i++) {
Dog dog[i] = new Dog();
dog[i].name = names[i];
System.out.println(dog[i].name);
}
}
public static class Dog {
public String name;
}
我的想法是,它将创建3只狗(dog0、dog1和dog2),然后更改dog0。给马克斯起名,狗1。给贝拉和狗起名。我叫杰克
但是,我遇到以下编译错误:
/MyClass.java:6: error: ']' expected
Dog dog[i] = new Dog();
^
/MyClass.java:6: error: illegal start of expression
Dog dog[i] = new Dog();
^
我就是搞不懂发生了什么事?结束方括号就在那里,但编译器告诉我它需要它,就像它不存在一样。我可能用数组和循环创建变量是错误的,如果是,请告诉我正确的方法
附言:如果是重复的,我很抱歉。最后的方括号是我的问题的关键,搜索引擎忽略了“]”,无论是在这里还是在谷歌。我正在搜索关于“expected']'”的线程,但它只提供“expected”的结果
编辑:我可能说得不够清楚。我想做的是编写一个代码,它将等于以下内容:
public static void main(String[] args) {
Dog dog0 = new Dog();
dog0.name = "Max";
Dog dog1 = new Dog();
dog1.name = "Bella";
Dog dog2 = new Dog();
dog2.name = "Jack";
}
}
public static class Dog {
public String name;
}
只是尝试使用数组和循环获得相同的结果,但失败了
# 1 楼答案
1)将Dog数组声明出for循环
2)在设置索引值之前删除狗类名称
错:
正确:
# 2 楼答案
必须在循环外声明一个
Dog
数组:并在循环内设置特定索引的值:
因此,主要方法如下所示:
顺便说一句:类的属性不应该是公共的。因此,您应该将名称设置为私有,并添加getter和setter来访问该属性
编辑 这不能在循环中完成,也没有多大意义
更好的方法是使用参数名称创建构造函数,以便可以在一行中创建对象并添加set Name属性:
所以你可以这样称呼它: