0

レーシングカートの勝ちステータスを出力するプログラムに取り組んでいます。私はすべてが正しく設定されていると思い、先週のクラスでインストラクターの概要に従いました。ただし、そうすると、出力を印刷できなくなります。私の考えでは、私はループに陥っている可能性がありますが、それから抜け出す方法が本当にわかりません。私はこれに4時間取り組んでおり、無駄な答えを探してきました。コンパイル時にエラーが発生しないため、問題が何であるかわかりません。

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

これは、rをrace()のローカルスコープで初期化するためです。

于 2012-02-13T18:05:20.500 に答える
0

これint r = ran.nextInt(n) + 6; nは正の数である必要がIllegalArgumentExceptionあり、それ以外の場合は 0 になります。

トモスが提案しvalue = ran.nextInt(5) + 1;たように、1 から 5 の間の値を取得するために使用する必要があり、正常に動作します。javadoc Random.nextInt(int)に従って理解を深めてください。

于 2012-02-13T18:14:21.067 に答える
0

それとは別に、この変更も行う必要があります

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 に答える
0

mainメソッドにコードが含まれていません。それがあなたのプログラムが何もしない理由です。次のように変更します。

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

A program starts its execution in the main() method so, if like in your example, you have no code in main() the program will finish that method and then terminate.

In you're program it looks like you're trying to use display(). To use this you first need an instance of your class Assignment2.

This creates an instance of the class Assignment2 called a2

Assignment2 a2 = new Assignment2();

You can then use your object that we named a2 to call any method. Here I'm calling display()

a2.display();
于 2012-02-13T18:10:36.997 に答える