有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java需要帮助创建一个循环结构来运行我的程序

这是我的节目。我想我有我需要的一切,但我真的不擅长循环,需要你们的帮助。这是一个垄断棋盘,只有一名玩家需要在棋盘上转圈(一次40格)

package monopoly;
import java.util.*;

public class Monopoly1 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws Exception {

        BoardSquare[] square = new BoardSquare[40]; // array of 40 monopoly squares

        Player thePlayer = new Player(); //new object thePlayer from Player class
        thePlayer.getLocation(); //call method getLocation which should be instantiated from player class to zero
        int i;
        loadArray(square);

        Dice diceOne = new Dice(); //new dice object
        Dice diceTwo = new Dice(); //new dice object
        int rollOne; //variable to hold rollOne
        int rollTwo; //variable to hold rollTwo
        int rollTotal; //variable to hold rollTotal

        do {
            rollOne = diceOne.roll();
            rollTwo = diceTwo.roll();
            rollTotal = rollOne + rollTwo;

            BoardSquare newPosition = square[thePlayer.getLocation() + rollTotal];
        } while (thePlayer.getBalance() > 0);

        // test the code by printing the data for each square

        System.out.println("Data from the array of Monopoly board squares. Each line has:\n");
        System.out.println("name of the square, type, rent, price, color\n");
        for (i = 0; i < 40; i++)
        System.out.println(square[i].toString());

    }

//***********************************************************************

    // method to load the BoardSquare array from a data file
    public static void loadArray(BoardSquare[] square) throws Exception

    {
        int i; // a loop counter

        // declare temporary variables to hold BoardSquare properties read from a file
        String inName;
        String inType;
        int inPrice;
        int inRent;
        String inColor;

        // Create a File class object linked to the name of the file to be read
        java.io.File squareFile = new java.io.File("squares.txt");

        // Create a Scanner named infile to read the input stream from the file
        Scanner infile = new Scanner(squareFile);


        /* This loop reads data into the square array.
         * Each item of data is a separate line in the file.
         * There are 40 sets of data for the 40 squares.
         */
        for (i = 0; i < 40; i++) {
            // read data from the file into temporary variables
            // read Strings directly; parse integers
            inName = infile.nextLine();
            inType = infile.nextLine();
            inPrice = Integer.parseInt(infile.nextLine());
            inRent = Integer.parseInt(infile.nextLine());;
            inColor = infile.nextLine();

            // intialze each square with the BoardSquare constructor
            square[i] = new BoardSquare(inName, inType, inPrice, inRent, inColor);
        } // end for
        infile.close();

    } // endLoadArray
    //***********************************************************************

} // end class Monopoly

class BoardSquare {

    private String name; // the name of the square
    private String type; // property, railroad, utility, plain, tax, or  toJail 
    private int price; // cost to buy the square; zero means not for sale
    private int rent; // rent paid by a player who lands on the square 
    private String color; // many are null; this is not the Java Color class

    // constructors
    public BoardSquare() {
        name = "";
        type = "";
        price = 0;
        rent = 0;
        color = "";
    } // end Square()

    public BoardSquare(String name, String type, int price, int rent, String color) {
        this.name = name;
        this.type = type;
        this.price = price;
        this.rent = rent;
        this.color = color;
    } // end Square((String name, String type, int price, int rent, String color)

    // accesors for each property
    public String getName() {
        return name;
    } //end  getName()

    public String getType() {
        return type;
    } //end  getType()

    public int getPrice() {
        return price;
    } //end  getPrice()

    public int getRent() {
        return rent;
    } //end  getRent()

    public String getColor() {
        return color;
    } //end  getColor()

    // a method to return the BoardSquare's data as a String
    public String toString() {
        String info;
        info = (name + ", " + type + ", " + price + ", " + rent + ", " + color);
        return info;
    } //end  toString()

} // end class BoardSquare

//***************************************************************************

class Player {
    private String name;
    private String token;
    private int location;
    private int balance;
    private String player;

    public Player()
    {
        name = "";
        token = "";
        location = 0;
        balance = 1500;
    } // end Square()
    public Player(String name, String token, int location, int balance) {
        this.name = name;
        this.token = token;
        this.location = location;
        this.balance = balance;

    }

    /**
     * @return the name
     */
    public String getName() {
        return name;
    }

    /**
     * @param name the name to set
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * @return the token
     */
    public String getToken() {
        return token;
    }

    /**
     * @param token the token to set
     */
    public void setToken(String token) {
        this.token = token;
    }

    /**
     * @return the location
     */
    public int getLocation() {
        return location;
    }

    /**
     * @param location the location to set
     */
    public void setLocation(int location) {
        this.location = location;
    }

    /**
     * @return the balance
     */
    public int getBalance() {
        return balance;
    }

    /**
     * @param balance the balance to set
     */
    public void setBalance(int balance) {
        this.balance = balance;
    }

    /**
     * @return the player
     */
    public String getPlayer() {
        return player;
    }

    /**
     * @param player the player to set
     */
    public void setPlayer(String player) {
        this.player = player;
    }

    void setLocation() {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

} //end class player

class Dice {
    public static int roll() {
        int total;
        total = 1 + (int)(Math.random() * 6);

        return total;

    }
}

我需要循环做的是:掷两个骰子,将这两个数字相加,然后将玩家移动到那个位置(从0开始)。当玩家到达广场时,会显示一条带有

  1. 球员的名字
  2. 玩家令牌的名称
  3. 掷骰子
  4. 玩家现在所在的广场的名称
  5. 广场的租金,如果不是零的话
  6. 玩家的新银行余额

然后程序会显示“按回车键继续”,并在玩家按回车键时继续。一旦玩家绕棋盘一圈(因此当掷骰子最终等于40或更多时),循环应该停止


共 (1) 个答案

  1. # 1 楼答案

    我从一个while循环开始,比如:

    int die_total = 0;
    int die1_value = 0;
    int die2_value = 0;
    while(die_total <=40) {
    //determine random values for die 1 and 2
    //add them together and move your player
    //do your 1-6
    //put your wait for user input here with an Object.wait()
    //add the die 1 and 2 values to your die_total
    }