需要帮助创建循环结构以使我的程序运行

时间:2015-11-25 21:45:44

标签: java arrays

所以这是我的计划。我想我拥有我需要的一切,但我在循环方面非常糟糕,需要向你们寻求帮助。这是一个垄断委员会,只有一名球员需要围棋(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. 玩家的新银行余额
  7. 然后程序应该说“按回车键继续”并在玩家按下回车键时继续。一旦玩家一次绕过棋盘,循环应该停止(所以当骰子最终滚动到40或更多时)。

1 个答案:

答案 0 :(得分:0)

我开始使用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
}