Java nextInt()生成负数

Java nextInt()生成负数,java,random,Java,Random,我做了一个随机线发生器的乐趣。由于某些原因,该程序没有使用我在nextInt中提供的最大数量。奇怪的是,唯一正常工作的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

我做了一个随机线发生器的乐趣。由于某些原因,该程序没有使用我在nextInt中提供的最大数量。奇怪的是,唯一正常工作的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开始可以工作,但结束整数不能工作。它们将生成一个完全随机的数字,有时低至-21842。但它们并不总是消极的

JavaNextint生成负数

不,nextInt——您所称的方式——不返回负数

重复从endx1减去空格的循环是导致endx1变为负值的原因。

事实:

endx1的初始值可以介于0和319之间。 空格的值可以介于0和24之间。 x从1000开始 对于每个x,您将endx1按空格减少一次,这意味着它可以达到低至0-1000*24=-24000或高至319-1000*0的值

因此,从本质上讲,您的代码是一种过于复杂的方法,可以为endx1指定一个介于-24000和319之间的随机值。当然,大部分时间都是负值。

您可以使用:

Random rnd = new Random();
int posRandomInt = rnd.nextInt( Integer.MAX_VALUE );

Integer.MAX\u VALUE是一个常量,它包含int可以具有的最大值231-1。

您确定它不会溢出吗?您的while循环运行1000次,并且每次迭代都要向endy1添加空间。请在while循环之前尝试打印endy1、endx1等。看起来您在运行1000次的while循环中修改了endy1和endx1;你说nextInt返回的是负数,但你没有解释你在哪里看到它们。你应该尝试将你对Random类的使用隔离到一个更小的、包含的示例中。可能是一个JUnit测试或一个执行println调用的控制台应用程序。我怀疑这是做错了。@tasteslikejava假设endy是0,空格是21:0+21*1000=21000我相信nextInt会生成负数nextInt另一方面。。。。