从数组中随机选择一个索引,在TextView中显示

时间:2011-07-25 09:41:14

标签: java android android-emulator

我是Android开发的新手,我想知道为什么我的代码崩溃Android模拟器。我正在做的是创建一个字符串数组,然后随机从数组中选择一个索引并在TextView内显示该值。但它似乎总是让我的鸸。崩溃。

package com.test.randomTest;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class randomTestActivity extends Activity {

    private Button button;
    private TextView helloTextView;
    private String[] hellos;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        helloTextView = (TextView)findViewById(R.id.helloText);
        button = (Button)findViewById(R.id.button);

        hellos = new String[7];
        hellos[0] = "Hello";
        hellos[1] = "G'days";    
        hellos[2] = "Yo!";
        hellos[3] = "Hi";
        hellos[4] = "Hay";
        hellos[5] = "Bonjour";
        hellos[6] = "Hay there!";
        hellos[7] = "Hallo";

        button.setOnClickListener(buttonListener);

    }

    private OnClickListener buttonListener = new OnClickListener() {

        public void onClick(View v) {

            int x = 0 + (int)(Math.random() * ((7 - 0) + 1));
            String helloText = hellos[x];
            helloTextView.setText(helloText);

        }
    };
}

任何帮助/建议都会很棒!

感谢。

5 个答案:

答案 0 :(得分:2)

您创建了一个大小为7的String[]

hellos = new String[7];

因此索引的范围是0到6.尝试访问hellos[7]会导致IndexOutOfBoundsException

答案 1 :(得分:0)

我假设您获得了nullpointerexecption。尝试生成这样的随机数:

Random rando = new Random();
int x = rando.nextInt(hellos.lenght);

答案 2 :(得分:0)

package com.test.randomTest;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class randomTestActivity extends Activity {

    private Button button;
    private TextView helloTextView;
    private String[] hellos;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        helloTextView = (TextView)findViewById(R.id.helloText);
        button = (Button)findViewById(R.id.button);

        hellos = new String[8];
        hellos[0] = "Hello";
        hellos[1] = "G'days";    
        hellos[2] = "Yo!";
        hellos[3] = "Hi";
        hellos[4] = "Hay";
        hellos[5] = "Bonjour";
        hellos[6] = "Hay there!";
        hellos[7] = "Hallo";

        button.setOnClickListener(buttonListener);

    }

    private OnClickListener buttonListener = new OnClickListener() {

        public void onClick(View v) {

            int x = 0 + (int)(Math.random() * ((7 - 0) + 1));
            String helloText = hellos[x];
            helloTextView.setText(helloText);

        }
    };
}

答案 3 :(得分:0)

增加字符串数组大小,你给出7作为大小,但是你将8个值传递给字符串。 所以它抛出indexoutofbounds异常。

答案 4 :(得分:0)

这可能是因为数组IndexOutOfBoundException ...因为有时你的x会有值8但数组长度只有7 ..