改好了,直接运行就OK了。
class Student {
String[] names = new String[35];
boolean is = false;
public void addName(String name, int i) { // todo: 这里改了
names[i] = name;
}
public void showName() {
for (int i = 0; i < 5; i++) {
System.out.println(names[i]+"\t");
}
}
}
public class Test3 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
Student f = new Student();
System.out.println("next");
for (int i = 0; i < 5; i++) {
String name = in.next();
f.addName(name,i); // todo: 这里改了
}
f.showName();
}
}
改一下addName函数就行了 .............你把i的值带进来
因为你每次调用addName方法的时候,方法内的i永远都是从0开始,所以,每次添加时,都放在数组的第一个位置
Class Student {
String[] names = new String[35];
boolean is = false;
//传个i过来
public void addName(String name, int i) {
names[i] = name;
}
public void showName() {
for (int i = 0; i < 5; i++) {
System.out.println(names[i]+"\t");
}
}
}
public class Test3 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
Student f = new Student();
System.out.println("next");
for (int i = 0; i < 5; i++) {
String name = in.next();
f.addName(name,i); //传i过去
}
f.showName();
}
}
解决了吗
在main方法中只创建了一个对象,然后for循环中addName后面的传值把前面的覆盖了掉了,实际上只是输入最后一个值设置了5次而已, 还有在Student的addName方法中,for循环在方法里面,addName连续调用传值后面的会覆盖前面的值,所以始终只会打印最后一个,知道了原因就好修改了。
Class Student {
String[] names = new String[35];
boolean is = false;
//传个i过来
public void addName(String name, int i) {
names[i] = name;
}
public void showName() {
for (int i = 0; i < 5; i++) {
System.out.println(names[i]+"\t");
}
}
}
public class Test3 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
Student f = new Student();
System.out.println("next");
for (int i = 0; i < 5; i++) {
String name = in.next();
f.addName(name,i); //传i过去后 通过这个获取
}
f.showName();
}
}
这样 你每次都取得一个值 这样就可以了