我自己学习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.name更改为Max,将dog1.name更改为Bella,将dog3.name更改为Jack。
但是,我收到以下编译错误:
/MyClass.java:6: error: ']' expected
Dog dog[i] = new Dog();
^
/MyClass.java:6: error: illegal start of expression
Dog dog[i] = new Dog();
^
我无法弄清楚,发生了什么?关闭的方括号就在那里,然而编译器告诉我它期望它,就像它不存在一样。我可能用数组和循环错误创建变量,如果是这样,请指出我的正确方法。
P.S。:对不起,如果它是重复的话。关闭方括号是我的问题的关键点,搜索引擎只是忽略了这里和谷歌中的&#39;]&#39;我正在搜索关于&#34;期待&#39;&#39;&#34;&#34;的线索,但它只给了我&#34;期望&#34;的结果。
编辑:我可能没有让自己清楚。我试图做的是编写一个代码,它等于下面的代码:
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;
}
尝试使用数组和循环获得相同的结果,但失败了。
答案 0 :(得分:9)
你必须在循环之外声明一个Dog
数组:
Dog[] dog = new Dog[names.length];
并在Loop中设置特定索引的值:
dog[i] = new Dog();
所以主要方法如下:
public static void main(String[] args) {
String[] names = {Max, Bella, Jack};
Dog[] dog = new Dog[names.length];
for (int i = 0; i < names.length; i++) {
dog[i] = new Dog();
dog[i].name = names[i];
System.out.println(dog[i].name);
}
}
BTW:一个类的属性不应该是公共的。因此,您应该将Name设为私有,并将getter和setter添加到Access属性
修改强> 这不可能在一个循环中完成,并没有多大意义。
更好的方法是使用Parameter Name创建一个构造函数,这样就可以创建对象并在一行中添加Name属性:
public static class Dog {
private String name;
public Dog(String name){
this.name = name
}
//getter and setter
....
}
所以你可以这样称呼:
Dog dog1 = new Dog("Max");
答案 1 :(得分:0)
1)在for循环中声明Dog数组。
Dog[] dog = new Dog[names.length];
2)在设置索引值之前删除Dog类名称。
错误:
Dog dog[i] = new Dog();
正确的:
dog[i] = new Dog();