Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.11.2016, 22:27   #1
Lama Under Cover
Пользователь
 
Аватар для Lama Under Cover
 
Регистрация: 15.08.2016
Сообщений: 32
По умолчанию Не работает рандом

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

Код:
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;
                }
            }
        }
    }
}
http://imageshack.com/a/img922/5707/6yizfA.gif
Lama Under Cover вне форума Ответить с цитированием
Старый 15.11.2016, 22:52   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

это Вы их просто готовить не умеете.

неужели трудно набрать в поисковике Java Random example и взять код из первого же примера?!

вот такой:
Код:

import java.util.Random;

/** Generate 10 random integers in the range 0..99. */
public final class RandomInteger {
  
  public static final void main(String... aArgs){
    log("Generating 10 random integers in range 0..99.");
    
    //note a single Random object is reused here
    Random randomGenerator = new Random();
    for (int idx = 1; idx <= 10; ++idx){
      int randomInt = randomGenerator.nextInt(100);
      log("Generated : " + randomInt);
    }
    
    log("Done.");
  }
  
  private static void log(String aMessage){
    System.out.println(aMessage);
  }
}
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
рандом kazan116@gmail Общие вопросы Delphi 3 28.01.2016 23:33
Рандом Praud Помощь студентам 7 02.06.2014 04:53
рандом ZoomHz Общие вопросы C/C++ 1 10.07.2011 20:22
Не работает рандом в VS C++ 2010 *stRong* Visual C++ 4 04.02.2011 15:38
рандом benjaminfran Помощь студентам 3 14.02.2008 23:53