0

我一直在开发一个应该输出赛车获胜状态的程序。我以为我已经正确设置了所有内容,并且上周在课堂上按照老师的大纲进行了操作。但是,这样做我无法打印输出。我的想法是我可能陷入了一个循环,但我真的不知道如何摆脱它。我已经为此工作了四个小时,并且搜索了低和高的答案都无济于事。编译时我没有收到任何错误,所以我不确定问题可能是什么。

import java.util.*;
import java.math.*;

public class Assignment2{

public static void main(String args[]){

}

int r, cart, value;

public void race(){ //generates random number to assign value to cart
    Random ran = new Random();
    int r = ran.nextInt(0) + 6;
            value = r;
    }
public int getValue(){ //assigns value to carts
    return value;
    }
public void display(){ //sys.out to print results
    race();

    if (value == 5){
        System.out.println("______");
        System.out.println("|____|  Winning Status = 5");
        System.out.println(" o o");
        }
    else if(value == 4){
        System.out.println("______");
        System.out.println("|____|  Winning Status = 4");
        System.out.println(" o o");
        }
    else if(value == 3){
        System.out.println("______");
        System.out.println("|____|  Winning Status = 3");
        System.out.println(" o o");
        }
    else if(value == 2){
        System.out.println("______");
        System.out.println("|____|  Winning Status = 2");
        System.out.println(" o o");
        }
    else if(value == 1){
        System.out.println("______");
        System.out.println("|____|  Winning Status = 1");
        System.out.println(" o o  YOU'RE FIRST! CONGRATS!");
        }
    }
}
4

7 回答 7

2

您的main()方法中没有任何内容,因此实际上没有执行任何操作。也许你的意思是:

public static void main(String args[]) {
    (new Assignment2()).display();
}

由于您的代码现在存在,您应该取消r(它未使用)并更改以下内容:

// int r = ran.nextInt(0) + 6;
value = ran.nextInt(5) + 1;
于 2012-02-13T18:03:20.367 回答
1

int r = ran.nextInt(0) + 6;并且value = r意味着value至少是6。因此您不满足任何条件。尝试一下if (value >= 5),您应该会看到相应的消息。

更好的是,尝试int r = ran.nextInt(5) + 1;获取 1 到 5 之间的值。

于 2012-02-13T18:03:31.513 回答
0

您的main方法不包含任何代码。这就是为什么你的程序什么都不做的原因。将其更改为:

public static void main (String[] args)
{
    Assignment2 as = new Assignment2();
    as.display();
}
于 2012-02-13T18:02:51.803 回答
0

race()这是因为您在本地范围内初始化 r 。

于 2012-02-13T18:05:20.500 回答
0

程序在方法中开始执行,main()因此,如果像在您的示例中一样,程序中没有代码main()将完成该方法然后终止。

在你的程序中,看起来你正在尝试使用display(). 要使用它,您首先需要您的类Assignment2 的实例。

这将创建一个名为 a2 的类 Assignment2 的实例

Assignment2 a2 = new Assignment2();

然后,您可以使用我们命名为 a2 的对象来调用任何方法。我在这里打电话display()

a2.display();
于 2012-02-13T18:10:36.997 回答
0

在这int r = ran.nextInt(n) + 6; n必须是一个正数,否则你会得到IllegalArgumentException,在你的情况下是 0。

正如 Thomos 建议的那样,您应该使用value = ran.nextInt(5) + 1;来获取 1 到 5 之间的值,它会正常工作。按照 javadoc Random.nextInt(int)更好地理解它。

于 2012-02-13T18:14:21.067 回答
0

Appart from that you have to do this chages as well

public static void race(){ //generates random number to assign value to cart
    Random ran = new Random();
    int r = ran.nextInt(5) + 1;
    value=r;
}

public static void main(String args[]){
    display();
}

我将所有方法都切换为“静态”;

于 2012-02-13T18:14:33.420 回答