数组被循环中的最后一个索引覆盖

时间:2011-06-29 22:39:13

标签: android loops override

我正在处理带有两个带字符串数组的代码(字符串只是句子)并将它们分配给另一个数组中的类(代码中显示的Sentence类数组)。

所以这是我的问题。当调用popList()时,for循环运行两次并正常工作,将addStrings和addTranslation的第一个索引放入数组的第一个类中。但是,当循环索引并再次运行temp.sentence = addStrings [1]时,它也会超过第一个类的.sentence。然后当temp.translations = addTranslations [1]再次运行时,它会覆盖第一个类的.translation。

因此,在循环结束时,所有数组都填充了相同的东西:addStrings和addTranslation的最后一个索引。每次循环时,它都会用它应该放入的索引覆盖它之前的所有索引。

任何人都知道这里的问题是什么?谢谢!

public class Sentence {
public String sentence;
public String translation;
Sentence() {
    sentence = " ";
    translation = " ";
}
}

    private void popStrings() {
    addStrings[0] = "我是你的朋友。";  addTranslations[0] = "I am your friend.";
    addStrings[1] = "你可以帮助我吗?"; addTranslations[1] = "Could you help me?";
    addStrings[2] = "我不想吃啊!";   addTranslations[2] = "I don't want to eat!";
}
//Fill Sentence array with string and translation arrays
private void popList() {
    int i = 0;
    Sentence temp = new Sentence();
    for(i = 0; i < addStrings.length && i < addTranslations.length ; i++) {
        temp.sentence = addStrings[i];
        temp.translation = addTranslations[i];
        sentences[i] = temp;
    }
}

1 个答案:

答案 0 :(得分:1)

你需要在循环中创建新的Sentence():

for(i = 0; i < addStrings.length && i < addTranslations.length ; i++) {
    Sentence temp = new Sentence();
    temp.sentence = addStrings[i];
    temp.translation = addTranslations[i];
    sentences[i] = temp;
}

否则,您可以在同一个对象中连续设置句子和翻译。