Java 无法将对象添加到非基元数组

Java 无法将对象添加到非基元数组,java,arrays,Java,Arrays,这是考试班。 这里我尝试将字符串添加到字符串数组中。我不能在这里使用ArrayList。所以请给我一个解决方案 public class Test { String[] name = new String[10]; public void addName(String sName){ for(String s : name){ if(s==null){ s = sName; break; } }

这是考试班。 这里我尝试将字符串添加到字符串数组中。我不能在这里使用ArrayList。所以请给我一个解决方案

public class Test {

String[] name = new String[10];

public void addName(String sName){
    for(String s : name){
        if(s==null){
            s = sName;
            break;
        }
    }
}

public void displayString(){
    for(String s : name){
        System.out.println(s);
    }
}
}
这是主课

public class TestDemo {

public static void main(String[] args) {
    Test t = new Test();
    t.addName("prasad");
    t.addName("ravi");
    t.addName("john");

    t.displayString();
}

}

out-put-to-displayString为空

s=sName
将值分配给局部变量,该变量用于保存与数组第n个成员相同的值,但在内存中使用不同的位置。
长话短说,当
s
被更新时,数组元素不会被更新

试试这个:

public void addName(String sName){
    for(int i= 0; i < name.length; i++){
        if(name[i]==null){
            name[i] = sName;
            break;
        }
    }
}
public void addName(字符串sName){
for(int i=0;i
将s视为name[index]的值复制到的变量。为s赋值不会更改name[index]的值

尝试:

public void addName(字符串sName){
for(int i=0;i
像这样的事情应该行得通

public void addName(String sName){
    for(int i=0; i<name.length; i++){
        if(name[i]==null){
           name[i] = sName;
           break;
        }
   }
public void addName(字符串sName){

对于(int i=0;其罪魁祸首是
s=sName;
此赋值不符合您的想法。它将
sName
的值赋值给
s
,但
s
只是一个局部变量;它不与数组中的任何元素关联
name
。正如其他人所指出的,您需要在
中显式赋值>通过使用
name[i]=sName
访问数组,命名该数组。感谢您的回答和解释。将进行检查。感谢您的回答和解释。许多答案都是正确的。但是您更快了。:-)
public void addName(String sName){
    for(int i=0; i<name.length; i++){
        if(name[i]==null){
           name[i] = sName;
           break;
        }
   }