gpt4 book ai didi

java - 为什么这段代码强制退出?

转载 作者:行者123 更新时间:2023-12-01 19:19:31 25 4
gpt4 key购买 nike

我已经开始并行学习 Java 和 Android 应用程序开发。目前,我尝试使用 Log.v 打印一个字符串数组 colorArray

    <?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, defaultActivity!</string>
<string name="app_name">Challenge</string>
<string name="red">Red</string>
<string name="orange">Orange</string>
<string name="yellow">Yellow</string>
<string name="green">Green</string>
<string name="blue">Blue</string>
<string name="indigo">Indigo</string>
<string name="violet">Violet</string>
<string-array name="colorsArray">
<item>@string/red</item>
<item>@string/orange</item>
<item>@string/yellow</item>
<item>@string/green</item>
<item>@string/blue</item>
<item>@string/indigo</item>
<item>@string/violet</item>
</string-array>
</resources>

现在我尝试以不同的方式打印该数组,仅供练习。

package com.gaurish.challenge;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

public class defaultActivity extends Activity {
/** Called when the activity is first created. */
public static final String DEBUG_TAG = "PracticeApp";


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
String aColors[] = getResources().getStringArray(R.array.colorsArray);
printUsingForEach(aColors);
printUsingWhile(aColors);
printReverse(aColors);
}

private void printUsingForEach(String[] aColors) {
for(String i : aColors) {
Log.v(DEBUG_TAG, "String array printed using for each loop: " + i);
}
}

private void printUsingWhile(String[] aColors) {
byte i=0;
while(i<=aColors.length) {
Log.v(DEBUG_TAG, "String array printed using While loop: " + aColors[i++]);
}
}

private void printReverse(String[] aColors) {
int i=aColors.length -1;
while(i> (-1) ) {
Log.v(DEBUG_TAG, "String array printed in reverse order -> " + aColors[i--]);
}
}
}

printUsingForEach() 和 printUsingWhile() 运行得很好,但 printReverse 方法没有运行,应用程序在到达之前就退出了。 here is the log我正在针对 android 1.6 进行构建

请指导这个n00b,为什么会发生这种情况

最佳答案

您的代码中有一个错误:

while(i<=aColors.length) { ... }

这将导致 i = aColors.length 进行循环迭代,这是越界的。

您可以在日志中看到这一点:

02-13 15:24:24.226: ERROR/AndroidRuntime(396): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.gaurish.challenge/com.gaurish.challenge.defaultActivity}: java.lang.ArrayIndexOutOfBoundsException
02-13 15:24:24.226: ERROR/AndroidRuntime(396): Caused by: java.lang.ArrayIndexOutOfBoundsException
02-13 15:24:24.226: ERROR/AndroidRuntime(396): at com.gaurish.challenge.defaultActivity.printUsingWhile(defaultActivity.java:31)

关于java - 为什么这段代码强制退出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4985115/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com