【发布时间】:2020-05-27 14:46:04
【问题描述】:
我想从字符串数组中初始化一个对象数组。
我有一个包含 6 个字符串记录的数组,我想用相同的字符串记录初始化两个对象,这意味着数组对象将有 12 个记录。
由于某种原因,我设法实例化了对象数组,但在循环结束后应用程序崩溃了。
public class Card {
private String pic;
public Card(String pic) {
this.pic = pic;
}
public String getPic() {
return pic;
}
public void setPic(String pic) {
this.pic = pic;
}
@Override
public String toString() {
return "Card{" +
"pic='" + pic + '\'' +
'}';
}
}
卡片文件结束。
package com.example.memorygame;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
public class MainActivity extends AppCompatActivity {
private void main() {
String[] pictures = {"crocodile", "duck", "lizard", "mosqitue", "parrot", "zebra"};
//String[] pictures = {"crocodile", "crocodile", "duck","duck", "lizard","lizard", "mosqitue","mosqitue", "parrot","parrot", "zebra" ,"zebra"};
Card[] cards = new Card[pictures.length*2];
Functions functions = new Functions();
for (int i = 0; i < cards.length*2; i+=2) {
cards[i] = new Card(pictures[i/2]);
cards[i + 1] = new Card(pictures[i/2]);
Log.i("case", cards[i].getPic()+" "+String.valueOf(i));
Log.i("case", cards[i].getPic()+" "+String.valueOf(i+1));
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
main();
}
}
这是控制台日志,表明阵列已完全堆叠,然后应用程序崩溃。
2020-05-27 17:36:37.345 358-358/? I/case: crocodile 0
2020-05-27 17:36:37.345 358-358/? I/case: crocodile 1
2020-05-27 17:36:37.345 358-358/? I/case: duck 2
2020-05-27 17:36:37.345 358-358/? I/case: duck 3
2020-05-27 17:36:37.345 358-358/? I/case: lizard 4
2020-05-27 17:36:37.345 358-358/? I/case: lizard 5
2020-05-27 17:36:37.345 358-358/? I/case: mosqitue 6
2020-05-27 17:36:37.345 358-358/? I/case: mosqitue 7
2020-05-27 17:36:37.345 358-358/? I/case: parrot 8
2020-05-27 17:36:37.345 358-358/? I/case: parrot 9
2020-05-27 17:36:37.345 358-358/? I/case: zebra 10
2020-05-27 17:36:37.345 358-358/? I/case: zebra 11
在这些日志之后我什么都没有,我也找不到应用程序崩溃的任何原因。
【问题讨论】:
-
当你进入两倍于实际数组大小的 i 范围时,你认为会发生什么?你不是让数组索引超出范围异常吗?
-
阅读this article 了解调试代码的技巧。