为 select 数组索引选择随机数时应用程序崩溃
App crashing when chosing random numbers to select array index
编辑: 已解决。这是一个愚蠢的错误!感谢您的快速回复。
我有 6 个数组,每个数组有 150-200 个元素。现在,当我尝试 select 索引号时,前两个 select 非常好,但从第三个索引号开始,应用程序开始崩溃。应用只有一个 activity.
String A[]={};
String B[]={};
...
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public void generate(View v) {
tToast("Insult on your beep!");
Gener();
}
public void Gener()
{
int i1 = new Random().nextInt(A.length);
String r1 = (A[i1]);
int i2 = new Random().nextInt(B.length);
String r2 = (A[i2]);
int i3 = new Random().nextInt(C.length);
String r3 = (A[i3]);
int i4 = new Random().nextInt(D.length);
String r4 = (A[i4]);
int i5 = new Random().nextInt(E.length);
String r5 = (A[i5]);
int i6 = new Random().nextInt(F.length);
String r6 = (A[i6]);
String fin = r1 + r2 +r3 + r4 +r5 +r6;
//Works OK up to r2 but from r3 error occurs
final TextView mTextView = (TextView) findViewById(R.id.Gen);
mTextView.setText(fin);
tToast("Me works");
}
private void tToast(String s) {
Context context = getApplicationContext();
int duration = Toast.LENGTH_LONG;
Toast toast = Toast.makeText(context, s, duration);
toast.show();
}
您每次都在 select 从 A
数组中读取字符串。我假设您想从每个字符串的每个不同数组中 select。
例子
您的代码:
String r5 = (A[i5])
我想你想要什么:
String r5 = (E[i5])
您正在为从 A 到 F 的每个数组计算随机索引,但试图从 A 数组中获取索引值。所以这可能会导致 ArrayIndex 异常尝试像这样更改您的代码
int i1 = new Random().nextInt(A.length);
String r1 = (A[i1]);
int i2 = new Random().nextInt(B.length);
String r2 = (B[i2]);
int i3 = new Random().nextInt(C.length);
String r3 = (C[i3]);
int i4 = new Random().nextInt(D.length);
String r4 = (D[i4]);
int i5 = new Random().nextInt(E.length);
String r5 = (E[i5]);
int i6 = new Random().nextInt(F.length);
String r6 = (F[i6]);
//Remaining code....
编辑: 已解决。这是一个愚蠢的错误!感谢您的快速回复。 我有 6 个数组,每个数组有 150-200 个元素。现在,当我尝试 select 索引号时,前两个 select 非常好,但从第三个索引号开始,应用程序开始崩溃。应用只有一个 activity.
String A[]={};
String B[]={};
...
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public void generate(View v) {
tToast("Insult on your beep!");
Gener();
}
public void Gener()
{
int i1 = new Random().nextInt(A.length);
String r1 = (A[i1]);
int i2 = new Random().nextInt(B.length);
String r2 = (A[i2]);
int i3 = new Random().nextInt(C.length);
String r3 = (A[i3]);
int i4 = new Random().nextInt(D.length);
String r4 = (A[i4]);
int i5 = new Random().nextInt(E.length);
String r5 = (A[i5]);
int i6 = new Random().nextInt(F.length);
String r6 = (A[i6]);
String fin = r1 + r2 +r3 + r4 +r5 +r6;
//Works OK up to r2 but from r3 error occurs
final TextView mTextView = (TextView) findViewById(R.id.Gen);
mTextView.setText(fin);
tToast("Me works");
}
private void tToast(String s) {
Context context = getApplicationContext();
int duration = Toast.LENGTH_LONG;
Toast toast = Toast.makeText(context, s, duration);
toast.show();
}
您每次都在 select 从 A
数组中读取字符串。我假设您想从每个字符串的每个不同数组中 select。
例子
您的代码:
String r5 = (A[i5])
我想你想要什么:
String r5 = (E[i5])
您正在为从 A 到 F 的每个数组计算随机索引,但试图从 A 数组中获取索引值。所以这可能会导致 ArrayIndex 异常尝试像这样更改您的代码
int i1 = new Random().nextInt(A.length);
String r1 = (A[i1]);
int i2 = new Random().nextInt(B.length);
String r2 = (B[i2]);
int i3 = new Random().nextInt(C.length);
String r3 = (C[i3]);
int i4 = new Random().nextInt(D.length);
String r4 = (D[i4]);
int i5 = new Random().nextInt(E.length);
String r5 = (E[i5]);
int i6 = new Random().nextInt(F.length);
String r6 = (F[i6]);
//Remaining code....