Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Pachan
0 / 0 / 1
Регистрация: 04.12.2015
Сообщений: 11
Завершенные тесты: 1
#1

Строка: убрать повторение строк - Программирование Android

04.12.2015, 20:05. Просмотров 307. Ответов 9

Программа выдаёт рандомную строку из массива. Нужно убрать повторение строк. Реализовал это так : создал коллекцию list, в которую каждый раз записываю номер строки (переменная random) и сравниваю всю коллекцию через Итератор с random. Строки повторяются, помогите найти ошибку или свой способ реализации. ВНИМАНИЕ: переменная as зависит от номера строки, то бишь у меня строки в определённом порядке. Если перемешивать их в коллекции, тогда не получится. Заранее спасибо
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
package pachan.games.daornet;
 
 
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.res.Resources;
import android.media.AudioManager;
import android.media.SoundPool;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
import android.media.SoundPool.OnLoadCompleteListener;
 
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
 
 
public class Game extends Activity implements OnLoadCompleteListener {
 
 
boolean as;
boolean compare;
int random;
 
List<Integer> list = new ArrayList();
Iterator<Integer> iterator = list.iterator();
 
@Override
protected final void  onCreate(Bundle savedInstanceState) {
 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.game);
    setVolumeControlStream(AudioManager.STREAM_MUSIC);
 
    next = (ImageButton) findViewById(R.id.next);
    TextView text = (TextView) findViewById(R.id.text);
 
 
    Resources res = getResources();
    String[] q = res.getStringArray(R.array.q);
    random = (int) (Math.random() * q.length);
    list.add(random);
 
    if(random <=2) {
        as = true;
    }
    else{
        as = false;
    }
 
    text.setText(q[random]);
 
 
 
    View.OnClickListener onClickListener = new View.OnClickListener() {
 
        @Override
        public final void onClick(View view) {
 
            switch (view.getId()) {
 
 
                case R.id.next:
                    sp.play(soundIdClick, 1, 1, 0, 0, 1);
                    yes.setVisibility(view.VISIBLE);
                    no.setVisibility(view.VISIBLE);
                    next.setVisibility(view.GONE);
 
                    text = (TextView) findViewById(R.id.text);
                    res = getResources();
                    String[] q = res.getStringArray(R.array.q);
                    random = (int) (Math.random() * q.length);
 
                    while (iterator.hasNext()) {
                        if (iterator.next() == random){
                            random = (int) (Math.random() * q.length);
                            ret();
                            break;
                        }
                        else  {
 
                            if (random <=2) {
                                as = true;
                            } else {
                                as = false;
                            }
 
                            list.add(random);
                            text.setText(q[random]);
                        }
                    }
 
                    break;
            }
        }
    };
    yes.setOnClickListener(onClickListener);
    no.setOnClickListener(onClickListener);
    next.setOnClickListener(onClickListener);
    }
 
private void ret() {
 
    TextView text = (TextView) findViewById(R.id.text);
    Resources res = getResources();
    String[] q = res.getStringArray(R.array.q);
 
    while (iterator.hasNext()) {
        if (iterator.next() == random){
            random = (int) (Math.random() * q.length);
            ret();
            break;
        }
        else  {
 
            if (random <=2) { //104
                as = true;
            } else {
                as = false;
            }
 
            list.add(random);
            text.setText(q[random]);
        }
    }
}

http://www.cyberforum.ru/android-dev/thread923134.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.12.2015, 20:05
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Строка: убрать повторение строк (Программирование Android):

Повторение Background
Здраствуйте! У меня есть картинка 32*32. Но при применение её на задний фон,...

Повторение операции в фоне
Разобрался с парсингом package com.example.nikolay.vmagaz; import...

Повторение фоновой картинки с указанием размера
Данный ImageView &lt;ImageView android:layout_width=&quot;match_parent&quot; ...

Повторение позиций в списке генерируемом адаптером
Есть кастомный CityAutoCompleteAdapter - в нём метод public View...

Как организовать повторение будильника через setExact()?
Добрый день! Нужно организовать ТОЧНЫЙ повторяющийся будильник методом...

9
Pablito
2645 / 2127 / 726
Регистрация: 12.05.2014
Сообщений: 7,436
Завершенные тесты: 1
04.12.2015, 20:10 #2
почему нельзя просто взять список, перемешать его и идти по нему по-порядку?
0
bastrakov
91 / 91 / 14
Регистрация: 10.10.2015
Сообщений: 307
Записей в блоге: 1
05.12.2015, 10:34 #3
что будет, когда будет использован последний элемент коллекции?
0
Spelcrawler
531 / 501 / 113
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
05.12.2015, 13:42 #4
Цитата Сообщение от bastrakov Посмотреть сообщение
что будет, когда будет использован последний элемент коллекции?
Ну раз не нужны повторы, то ничего - взял последний и на этом остановился. А для каждого отдельного заполнения заново перемешивать и брать по порядку.
0
bastrakov
91 / 91 / 14
Регистрация: 10.10.2015
Сообщений: 307
Записей в блоге: 1
05.12.2015, 15:06 #5
еще раз вопрос топикстртеру:
случайно выбираем элементы, и выбрали все - что дальше должно происходить?
т.е. это вопрос про то, как надо хранить коллекции. можно ли все забыть и начать с начала, или можно все забыть и выбросить.

как Вам правильно предложили: вы берете номера строки из массива, перемешиваете этот список интов, и потом выбираете оттуда последовательно номера, тупо выкидывая их из этого списка.
что должно произойти, когда Вы выберете весь список?
0
Spelcrawler
531 / 501 / 113
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
05.12.2015, 15:33 #6
Цитата Сообщение от bastrakov Посмотреть сообщение
вы берете номера строки из массива, перемешиваете этот список интов, и потом выбираете оттуда последовательно номера, тупо выкидывая их из этого списка
Зачем так извращаться?
Java
1
2
3
4
5
6
List<String> list = new ArrayList<>;
list.add("sdgfdf");
list.add("3sdhfj");
............
Collections.shuffle(list);
//И берем по порядку, никакие массивы индексов не нужны.
0
bastrakov
91 / 91 / 14
Регистрация: 10.10.2015
Сообщений: 307
Записей в блоге: 1
05.12.2015, 15:36 #7
насколько я знаю, Collections.shuffle работает только с примитивными типами.
0
Spelcrawler
531 / 501 / 113
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
05.12.2015, 15:37 #8
bastrakov, работает со всем, что может быть в листе, а там может быть все что угодно.
0
Pachan
0 / 0 / 1
Регистрация: 04.12.2015
Сообщений: 11
Завершенные тесты: 1
05.12.2015, 17:03  [ТС] #9
у строк есть значение true/false. Если их перемешать, ничего не выйдет
0
Pablito
2645 / 2127 / 726
Регистрация: 12.05.2014
Сообщений: 7,436
Завершенные тесты: 1
07.12.2015, 11:51 #10
это у тебя ничего не выйдет, не говори за всех
0
07.12.2015, 11:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.12.2015, 11:51
Привет! Вот еще темы с решениями:

Убрать повторение комбинаций
Написал разбиение числа на множители, но повторяются некоторые комбинации......

нужно убрать повторение
uses crt; const zn:string='0123456789ABCDEF'; c:array of...

Как убрать повторение фона?
http://jsfiddle.net/7t1p4Lmp/ В стиле есть такие строки: body {...

MS Acces 2010 убрать повторение значений в отчете
Помогите, пожалуйста, решить проблему. Звучит просто, но я не смог найти ответ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru