Это тестовый класс. здесь я пытаюсь добавить строку в массив строк. Я не могу использовать здесь 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();
}

}

Вывод для отображения String равен нулю

0
Krishna 20 Мар 2016 в 17:49

3 ответа

Лучший ответ

Думайте о s как о переменной, в которую копируется значение имени [index]. Присвоение значения s не изменит значение name [index].

Пытаться:

public void addName(String sName){
    for (int i = 0; i < name.length; i++) {
        if (name[i] == null) {
            name[i] = sName;
            break;
        }
    }
} 
3
M_G 20 Мар 2016 в 14:57

Что-то вроде этого должно работать

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

}

1
jonhid 20 Мар 2016 в 14:57

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;
        }
    }
}
4
Yoav Gur 20 Мар 2016 в 14:53