繁体   English   中英

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

[英]Randomly pick an index from an array, display in TextView

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

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);

        }
    };
}

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

谢谢。

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

hellos = new String[7];

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

我假设你得到了一个nullpointerexecption。 尝试生成这样的随机数:

Random rando = new Random();
int x = rando.nextInt(hellos.lenght);
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);

        }
    };
}

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM