通过计算数组结果,这是一种明智的方法吗?

时间:2014-07-06 17:20:46

标签: java arrays count

首先,这是一个java骰子投掷应用程序。这将允许两个玩家一起玩,以及设置投掷的骰子数量。从那里,结果将进行比较。因此,我需要能够计算玩家1和随后的玩家2抛出的1的数量。

现在,我的代码只适用于玩家一,从那里,我将添加到玩家两个编码,以免混淆自己。我已经达到了这个部分,我可以从结果中计算出1和2的数量,但我不确定它是否是一种可行或合理的方法(if-else)语句。我想知道switch语句是否可行,或者可能是任何循环,所以你们可以给我一些建议吗?

提前致谢!

import java.util.Scanner;
import java.util.Arrays;

class TestDie {

public static void main (String [] args)
{
    Die firstDie = new Die();
    int[] playerOneResults;

    firstDie.roll();
    System.out.println(firstDie.getFaceValue());

    Scanner userInput = new Scanner(System.in);
    System.out.println("PLease enter the name of player one");
    String playerOneName = userInput.next();

    System.out.println("Please enter the name of player two");
    String playerTwoName = userInput.next();

    System.out.println("Enter the number of dice to be thrown");
    int numDice = userInput.nextInt();

    System.out.println("First player's name: " + playerOneName);
    System.out.println("Second player's name: " + playerTwoName);
    System.out.println("Number of dice will be thrown: " + numDice);

    playerOneResults = new int[numDice];
    int c = 0;
    int d= 0;

    for(int counter = 0; counter != numDice; counter++)
    {

        firstDie.roll();
        playerOneResults[counter] = firstDie.getFaceValue();
        System.out.println("Player one results: " + playerOneResults[counter]);

        if(playerOneResults[counter] == 1)
        {
            c++;
        } else if(playerOneResults[counter] == 2)
        {
            d++;
        }   

        System.out.println(c);
        System.out.println(d);  
    }







}
}

2 个答案:

答案 0 :(得分:3)

我假设您想要计算骰子以1,2,3 ... 6结束的次数是多少?每个都有一个变量?如果是这样的话,我会做那样的事情

 int[] counts = new int[7];
    for(int counter = 1; counter <= numDice; counter++){
        firstDie.roll();
        playerOneResults[counter]; = firstDie.getFaceValue();
        counts[playerOneResults[counter]]++;
    }

我正在使用一个7的数组,跳过0处的元素,这样你就可以更容易地得到1或2的计数,例如只需调用count [1]或count [2]等。

通常,您应该在方法中拆分代码。不确定你的任务要求是什么,但我没有看到任何理由你不应该这样做。

编辑:该死的没有注意到伊兰的回答。对不起。

答案 1 :(得分:1)

使用数组而不是c和d变量会更优雅:

int[] counts = new int[6];
for(int counter = 0; counter != numDice; counter++)
{
    firstDie.roll();
    playerOneResults[counter] = firstDie.getFaceValue();
    System.out.println("Player one results: " + playerOneResults[counter]);
    counts[playerOneResults[counter]-1]++;
}

count [0]将保存1的数量 计数[1]将保持两个数量 ...
计数[5]将保持六位数。