2014-12-04 2 views
0

Я хочу создать случайное число, определяющее цвет. Этот цвет меняется каждый раз, когда счетчик кратен 3. Когда счетчик равен 0, 1, 2, цвет должен оставаться неизменным. Затем он должен измениться на 3.Как сохранить произвольно сгенерированное число в пределах определенного метода в течение определенного периода времени?

Счет изменяется каждый раз, когда выполняется метод printColor().

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

import java.awt.*; 
import java.util.*; 
public class ColorGenerator { 

private int count = 1; 
private Random rand; 
private int randomNumber; 

public Color getColor(){ 
    Color lionColor = Color.RED; 
    if (count % 3 == 0 || count == 1){ 
     randomNumber = rand.nextInt(3) + 1;  
    } 
    if (randomNumber == 1){ 
     lionColor = Color.RED; 
    } else if (randomNumber == 2){   
     lionColor = Color.BLUE; 
    } else { 
     lionColor = Color.GREEN; 
    } 
    return lionColor; 
} 

public void printColor(Color color){ 
    count++; 
    System.out.println(color.toString()); 
} 

} 
+0

Где происходит исключение? – javaHunter

+0

Вы инициализировали переменную rand? – Blitzkr1eg

ответ

2

Необходимо инициализировать rand. Изменение

private Random rand; 

к

private Random rand = new Random(); 

Обратите внимание, что с момента запуска в 1, то будет только 2 последовательных цвета первого запуска. Я рекомендую вам начать отсчет в 0 и отбросить || count == 1 (так как когда count = 0, count % 3 == 0 будет удерживаться).

Смежные вопросы