Случайно выбрать индекс из массива, отображаемого в TextView - PullRequest
0 голосов
/ 25 июля 2011

Я новичок в разработке для 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 ]

2 голосов
/ 25 июля 2011

Вы создали String[] размера 7.

hellos = new String[7];

Поэтому индексы варьируются от 0 до 6. Попытка доступа к hellos[7] приведет к IndexOutOfBoundsException.

0 голосов
/ 25 июля 2011

Это, вероятно, из-за массива IndexOutOfBoundException ... поскольку иногда ваш x будет иметь значение 8, а длина массива всего 7 ..

0 голосов
/ 25 июля 2011

Увеличьте размер строкового массива, который вы указали как 7, но вы передаете 8 значений в строку. поэтому он генерирует исключение indexoutofbounds.

0 голосов
/ 25 июля 2011
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);

        }
    };
}
0 голосов
/ 25 июля 2011

Полагаю, вы получили нулевое согласие.Попробуйте вместо этого сгенерировать случайное число:

Random rando = new Random();
int x = rando.nextInt(hellos.lenght);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...