Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
3 / 3 / 1
Регистрация: 15.08.2016
Сообщений: 149
1

Не срабатывает рандом

15.11.2016, 22:29. Показов 924. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Пытаюсь понять, почему три идущие подряд в Main метода randomShipOfWar() дают одинаковый, судя по выводу, результат.

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
import java.util.ArrayList;
 
/**
 * Created by admin on 15.11.2016.
 */
public class untitled1 {
    private static int copycheck;
    private static int startposI1;
    private static int startposJ1;
    private static int startposI2;
    private static int startposJ2;
    private static int startposZ;
    private static ArrayList<String> base = new ArrayList<>();
    private static ArrayList<String> ReadyArrayListRandomised = new ArrayList<>();
    public static void main(String[] args) {
 
        for (int i = 65; i < 72; i++) {
            for (int j = 1; j <8 ; j++) {
                base.add((char)i+Integer.toString(j));
            }
        }
        System.out.println("startposZ"+startposZ);
        System.out.println("base"+base);
        randomShipOfWar();
        System.out.println("Ship Of War"+ReadyArrayListRandomised);
        randomShipOfWar();
        System.out.println("Ship Of War"+ReadyArrayListRandomised);
        randomShipOfWar();
        System.out.println("Ship Of War"+ReadyArrayListRandomised);
        System.out.println("base"+base);
        }
 
 
    public static void randomShipOfWar() {
        while (copycheck != 3) {
            copycheck = 0;
            startposI1 = 65+(int) (Math.random()*7);
            startposJ1 = 1+(int) (Math.random()*5);
            startposI2 = 65+(int) (Math.random()*5);
            startposJ2 = 1+(int) (Math.random()*7);
            startposZ = (int) (Math.random()*2);
            ArrayList<String> ArrayListRandomised = new ArrayList<>();
            if (startposZ == 0) {
                for (int k = 0; k < 3; k++) {
                    ArrayListRandomised.add((char) startposI1 + Integer.toString((k+startposJ1)));
                }
            }
            else {
                for (int l = 0; l < 3; l++) {
                    ArrayListRandomised.add((char)(l+startposI2)+Integer.toString(startposJ2));
                }
            }
            for (int m = 0; m < 3; m++) {
                if (base.indexOf(ArrayListRandomised.get(m))>=0) {
                    copycheck++;
                }
                if (copycheck==3) {
                    for (int n = 0; n < 3; n++) {
                        if (base.indexOf(ArrayListRandomised.get(n)) >= 0) {
                            base.remove(base.indexOf(ArrayListRandomised.get(n)));
                        }
                    }
                    ReadyArrayListRandomised = ArrayListRandomised;
                    break;
                }
            }
        }
    }
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.11.2016, 22:29
Ответы с готовыми решениями:

Рандом с появлением групбоксов, рандом с расположением ответов в программе тестирования
Дали задание сделать тест с рандом выдачей вопросов(групбокс) и рандом расположения...

Рандом в пайтон (аппаратный рандом для генерации паролей)
суть такова есть такой скрипт на питоне wavBuf = dwParam1.contents if...

VBScript-овский рандом совсем не рандом
Не знаю, может я ошибаюсь, но по-моему VBScript-овский рандом совсем не рандом, т.е., генерит он...

Рандом совсем не рандом
Здравствуйте,столкнулся с проблемой,что при создании рандомных координат,для вывода на экран...

3
185 / 155 / 88
Регистрация: 04.10.2014
Сообщений: 397
16.11.2016, 06:48 2
Лучший ответ Сообщение было отмечено lamaundercover как решение

Решение

Java
1
            copycheck = 0;//до while надо
1
3 / 3 / 1
Регистрация: 15.08.2016
Сообщений: 149
16.11.2016, 09:31  [ТС] 3
Спасибо! Хотелось бы еще понять почему внутри цикла при следующем вызове процедуры не спасает copycheck = 0 внутри цикла?
0
185 / 155 / 88
Регистрация: 04.10.2014
Сообщений: 397
16.11.2016, 10:11 4
Потому что у вас все поля статические и после первого вызова процедуры, copyCheck остается равна 3,а ее обнуление происходило внутри цикла, который при значении 3 не запускается
0
16.11.2016, 10:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.11.2016, 10:11
Помогаю со студенческими работами здесь

Запрос срабатывает в SQL Server, но не корректно срабатывает в Visual Studio 2017
(SELECT ROW_NUMBER() over (ORDER BY AVG(Отметки.Отметка) DESC) ID, .ФИО, .Группа, Отметки.,...

Таймер срабатывает раньше времени или вообще не срабатывает
Помогите, пожалуйста, разобраться, что нетак с таймером. Браузер Chrome При создании записи,...

Рандом
Как сгенерировать 22-значное число на Яваскрипт? Генерируются только 17-18 и не больше.

рандом
подскажите что не так #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;vector&gt; using...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru