我是Android开发的新手,我想知道为什么我的代码崩溃Android模拟器。我正在做的是创建一个字符串数组,然后随机从数组中选择一个索引并在TextView
内显示该值。但它似乎总是让我的鸸。崩溃。
package com.test.randomTest;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class randomTestActivity extends Activity {
private Button button;
private TextView helloTextView;
private String[] hellos;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
helloTextView = (TextView)findViewById(R.id.helloText);
button = (Button)findViewById(R.id.button);
hellos = new String[7];
hellos[0] = "Hello";
hellos[1] = "G'days";
hellos[2] = "Yo!";
hellos[3] = "Hi";
hellos[4] = "Hay";
hellos[5] = "Bonjour";
hellos[6] = "Hay there!";
hellos[7] = "Hallo";
button.setOnClickListener(buttonListener);
}
private OnClickListener buttonListener = new OnClickListener() {
public void onClick(View v) {
int x = 0 + (int)(Math.random() * ((7 - 0) + 1));
String helloText = hellos[x];
helloTextView.setText(helloText);
}
};
}
任何帮助/建议都会很棒!
感谢。
答案 0 :(得分:2)
您创建了一个大小为7的String[]
。
hellos = new String[7];
因此索引的范围是0到6.尝试访问hellos[7]
会导致IndexOutOfBoundsException
。
答案 1 :(得分:0)
我假设您获得了nullpointerexecption。尝试生成这样的随机数:
Random rando = new Random();
int x = rando.nextInt(hellos.lenght);
答案 2 :(得分:0)
package com.test.randomTest;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class randomTestActivity extends Activity {
private Button button;
private TextView helloTextView;
private String[] hellos;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
helloTextView = (TextView)findViewById(R.id.helloText);
button = (Button)findViewById(R.id.button);
hellos = new String[8];
hellos[0] = "Hello";
hellos[1] = "G'days";
hellos[2] = "Yo!";
hellos[3] = "Hi";
hellos[4] = "Hay";
hellos[5] = "Bonjour";
hellos[6] = "Hay there!";
hellos[7] = "Hallo";
button.setOnClickListener(buttonListener);
}
private OnClickListener buttonListener = new OnClickListener() {
public void onClick(View v) {
int x = 0 + (int)(Math.random() * ((7 - 0) + 1));
String helloText = hellos[x];
helloTextView.setText(helloText);
}
};
}
答案 3 :(得分:0)
增加字符串数组大小,你给出7作为大小,但是你将8个值传递给字符串。 所以它抛出indexoutofbounds异常。
答案 4 :(得分:0)
这可能是因为数组IndexOutOfBoundException ...因为有时你的x会有值8但数组长度只有7 ..