Не повторять слова в Java при нажатии кнопки - приложение Android - PullRequest
0 голосов
/ 20 апреля 2020

Я пытаюсь создать приложение android, которое рандомизирует фрукты, но не повторяет их. Что-то интересное для моих детей, потому что мы сейчас дома. Тем не менее, я все еще очень новичок в программировании и у меня были некоторые вопросы, которые, я надеюсь, вы, профессионалы, можете помочь ответить.

Здесь я go:

Как я не могу повторить массив при нажатии на кнопку в Java? Я пытаюсь приносить фрукты без их повторения. Могу ли я отсортировать строку так, чтобы она проходила через все фрукты один за другим? Это не должно быть рандомизировано. Я просто хочу, чтобы каждое слово отображалось только один раз, когда я нажимаю кнопку и показываю последний массив: «Не осталось никаких вариантов фруктов»

Я пытался рандомизировать строку, но это повторяет фрукты. Я просто хочу, чтобы go один за другим. Когда я нажимаю кнопку на моем экране, вывод на этикетке с изображением должен давать мне каждый фрукт по одному.

ie. Нажата кнопка «Выход:« Яблоко »

кнопка нажата снова Выход:« Банан »

и так далее, пока последняя строка не покажет« Не осталось никаких вариантов фруктов »

Может ли кто-нибудь также помочь мне go вернуться к предыдущему массиву? Например, если я нажал на кнопки, и Apple, Banana, Orange показал, но я хотел go вернуться, чтобы увидеть банан. Как бы я это сделал?

Спасибо за помощь!

public class Fruit extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_fruit);

        final View.OnClickListener myFamQ = new View.OnClickListener() {
            public void onClick(View v) {


                final TextView Fruittext = (TextView) findViewById(R.id.fruitFamilyText);
                final Button next = (Button) findViewById(R.id.nextQuestion);


                final String[] Fruit = new String [] {"Apple", "Banana", "Orange", "Cherry", "Grapes"};
                final int nextQ = 0;

                if (nextQ < Fruittext.length) {
                    Fruittext.setText(Fruittext[nextQ]);

                } else familyText.setText("There is no more left");



            next.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                }

Ответы [ 2 ]

0 голосов
/ 20 апреля 2020

Вы можете использовать ArrayList и перемешать это проще, но вы хотите переместить логи c за пределы вашего OnClickListener.

final String[] Fruit = new String [] {"Apple", "Banana", "Orange", "Cherry", "Grapes"};

// Create a new ArrayList to store the Fruits
final ArrayList<String> list = new ArrayList<String>();
// Add the entire Fruit Array to the list
Collections.addAll(list, Fruit);

// Shuffle the ArrayList to randomize the order
Collections.shuffle(list);
// Our index to keep track of what fruit we want next.
int index = 0;

final View.OnClickListener myFamQ = new View.OnClickListener() {
    public void onClick(View v) {
        final TextView Fruittext = (TextView) findViewById(R.id.fruitFamilyText);
        final Button next = (Button) findViewById(R.id.nextQuestion);

        // You can use the list's size as a max, and just get the next item each click.
        if (index < list.size()) {
            // Grab the next fruit and set the TextView.
            String fruit = list.get(index);
            Fruittext.setText(fruit );

            // Increase our index by 1.
            index = index + 1;
        } else {
            familyText.setText("There is no more left");
        }
    }
}
0 голосов
/ 20 апреля 2020

Если вы отредактируете свой код для этого, он должен работать без повторения вашего массива.

public class Fruit extends AppCompatActivity {

Button next;
TextView Fruittext;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_fruit);

        next = findViewByID(R.id.nextQuestion);
        String[] fruit = new String [] {"Apple", "Banana", "Orange", "Cherry", "Grapes"};

        next.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                int nextQ = 0;

                if (nextQ < Fruittext.length) {
                    Fruittext.setText(fruit[nextQ]);
                    nextQ++;
                } else {
                    Fruittext.setText("There is no more available");
                }
            }
        });

Если вы хотите показать случайный фрукт в TextView, просто дайте мне знать, я помогу вам !

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...