Я создаю случайный генератор строк для удовольствия. По какой-то причине программа не использует максимальные числа I, предусмотренных в nextInt().
Как ни странно, единственный nextInt()
, который работает должным образом space.
Вот мой код:Java nextInt() генерирует отрицательные числа
public class LineFractal extends Applet {
Random rnd = new Random();
int width = 640;
int height = 640;
int x = 1000;
int endy1 = rnd.nextInt(320);
int endx1 = rnd.nextInt(320);
int starty1 = rnd.nextInt(320);
int startx1 = rnd.nextInt(320);
int space = rnd.nextInt(25);
public void init() {
setSize(width, height);
Frame c = (Frame)this.getParent().getParent();
c.setTitle("Line Generator");
}
public void paint(Graphics g) {
while (x > 0) {
x -= 1;
g.drawLine(startx1, starty1, endx1, endy1);
endy1 += space;
endx1 -= space;
}
g.drawString("Space: " + space, width-100, height-10);
g.drawString("Y (End): " + endy1, width-100, height-20);
g.drawString("Y (Start): " + starty1, width-100, height-30);
g.drawString("X (End): " + endx1, width-100, height-40);
g.drawString("X (Start): " + startx1, width-100, height-50);
}
}
Почему он делает это?
РЕДАКТИРОВАТЬ: Просто запустите его снова, и X (Пуск) и Y (Пуск) работают, но целые числа (End) этого не делают. Они будут генерировать абсолютно случайное число, иногда низкое как -21842. Но они не всегда отрицательны.
Вы уверены, что это не переполнение? Ваш цикл while работает 1000 раз, и вы добавляете пространство для endy1 на каждой итерации. –
Попробуйте распечатать 'endy1',' endx1' и т. Д. _Before_ ваш while-loop. Похоже, вы изменяете 'endy1' и' endx1' в своем while-loop (который выполняется 1000 раз). –
Я не думаю, что ваше описание точнее; вы говорите, что 'nextInt()' возвращает отрицательные числа, но вы не объяснили, где вы якобы видите их. – chrylis