为什么结果只打印出最后一个输入的值

改好了,直接运行就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();

}

}
这样 你每次都取得一个值 这样就可以了