java - 我打算使应用程序崩溃的 Activity ,引发错误 java.lang.ArrayIndexOutOfBoundsException : length=14; index=14

标签 java android

我遇到的错误:

 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/

相关文章:

java - 生成的 android 项目中缺少 gradlew

java - 我正在尝试从 Excel 工作表获取数据并将测试数据传递到登录名和密码字段中,但出现以下错误

java - Android - JSONArray 到 RecyclerView 适配器?

java - 直接使用 back spring security 内置表达式的方法

java - Activiti 进程未使用 Spring Boot 进行部署

java - 通过导航到 bin 目录解决从命令行启动 Apache Tomcat 的麻烦

android - 以编程方式从 Google Play 触发应用更新

android - 使用线程循环图像

android - 左对齐文本,右对齐复选框

android - 自定义 ActionBar 选项卡支持的填充