我正在处理带有两个带字符串数组的代码(字符串只是句子)并将它们分配给另一个数组中的类(代码中显示的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;
}
}
答案 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;
}
否则,您可以在同一个对象中连续设置句子和翻译。