我遇到的错误:
Process: com.example.numerology, PID: 4012
java.lang.ArrayIndexOutOfBoundsException: length=14; index=14
at com.example.numerology.MainActivity$3.onClick(MainActivity.java:90)
at android.view.View.performClick(View.java:6608)
at android.view.View.performClickInternal(View.java:6585)
at android.view.View.access$3100(View.java:785)
at android.view.View$PerformClick.run(View.java:25921)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:201)
at android.app.ActivityThread.main(ActivityThread.java:6810)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)
我的代码:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final EditText e1 = findViewById(R.id.name);
final EditText e2 = findViewById(R.id.date);
final EditText e3 = findViewById(R.id.month);
final EditText e4 = findViewById(R.id.year);
Button b = findViewById(R.id.button);
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
char[] n = e1.getText().toString().toCharArray();
int date = Integer.parseInt(e2.getText().toString());
int month = Integer.parseInt(e3.getText().toString());
int year = Integer.parseInt(e4.getText().toString());
int nn = 0;
int driver = date, conductor = date + month + year;
int temp, k = 0;
Intent i1 = new Intent(MainActivity.this, Main2Activity.class);
i1.putExtra("NN", nn);
i1.putExtra("Driver", driver);
i1.putExtra("Conductor", conductor);
startActivity(i1);
}
});
这是我正在使用的代码的主要部分,我认为问题与字符数组有关。 这就是我使用 char 数组的方式:
if (n[i] == 'f' || n[i] == 'F' || n[i] == 'p' || n[i] == 'P') {
nn += 8;
}
因此,此 Activity 确实会在屏幕上弹出,但是当我按下按钮跳转到下一个 Activity 时,应用程序崩溃,留下我上面指定的错误。 需要一些帮助来解决这个问题,谢谢。
最佳答案
数组索引从 0
开始并结束于length-1
。当您使用 <=
时,下面的代码访问它是错误的长度,因此您最后一次访问 i
将是length
而不是length-1
。所以改变你的循环
for (i = 1; i <= e1.getText().toString().length(); i++)
到
int len = e1.getText().toString().length();
for (i = 0; i < len ; i++)
关于java - 我打算使应用程序崩溃的 Activity ,引发错误 java.lang.ArrayIndexOutOfBoundsException : length=14; index=14,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56608668/