【问题标题】:Why this code Force Quits?为什么此代码强制退出?
【发布时间】:2011-02-14 00:22:42
【问题描述】:

我开始同时学习 Java 和 android 应用程序开发。目前,我正在尝试使用 Log.v 打印一个字符串数组 colorsArray

    <?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,为什么会发生这种情况

【问题讨论】:

  • java.lang.ArrayIndexOutOfBoundsException 正确阅读您的日志,这是一个简单的错误,可以查看错误具体在哪一行。 defaultActivity.java 行:31
  • 对不起,我保证下次会仔细阅读日志。谢谢!

标签: java android


【解决方案1】:

您的代码中有错误:

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)

【讨论】:

  • 哎呀,我的坏。下次我会更加努力。感谢您的帮助
猜你喜欢
  • 2011-03-31
  • 1970-01-01
  • 2020-11-17
  • 1970-01-01
  • 1970-01-01
  • 2021-11-06
  • 1970-01-01
  • 2019-10-12
  • 2013-10-07
相关资源
最近更新 更多