分数计算器

时间:2013-04-15 21:11:30

标签: java

好的,所以,我对java很新 我正在设计一个计分计算器,用于我长期搁置的项目。不过,我想知道如何做到这一点,就我所知。

该程序应该要求掷骰子,并将其添加到每个玩家的前一卷 我假设while循环可以实现这一点,但每次循环都会将变量重置为当前滚动。因此,我不能得到一个......

以下是一些代码:

    static int players;
    static String p1;
    static String p2;
    static String p3;
    static String p4;
    static int maxScore;
    static int roll1;
    static int roll2;
    static int roll3;
    static int roll4;
    static int total1;
    static int total2;
    static int total3;
    static int total4;
    public static void main(String[] args) {
    Scanner keyboard = new Scanner(System.in);
    System.out.print("Enter number of players: ");
    players=keyboard.nextInt();
    System.out.print("Enter Maximum Score: ");
    maxScore=keyboard.nextInt();
    if(players==2){                    //will add more ifs when i get the code right
        System.out.println("Please enter players names.");
        System.out.print("Player 1: ");
        p1=keyboard.next();
        System.out.print("Player 2: ");
        p2=keyboard.next();
        System.out.println(p1 + "\t \t " + p2 + "\n"
        + "_______ \t _______ \n" );  //displays scorecard look with players names

        {


        while (total1 < maxScore && total2<maxScore) { 
        //scorecard quits when maxScore is reached by either player
        int roll;
        total1=(roll+roll1); 

        System.out.print("");
        roll=keyboard.nextInt(); //asks for current roll

        System.out.print("\n"+"_____"+"\n");
        System.out.print(roll+"+"+"\n"+roll1+"\n"+"_____"+"\n"+(roll+roll1)+"\n");
        /*i want this to display total score + last roll and then 
        *total it again on the next line*/
        roll1=roll;
        }

3 个答案:

答案 0 :(得分:1)

如果我正确地阅读了您的问题,那么解决方案就是

total1+=(roll+roll1); 

相同
total1= total1+(roll+roll1); 

您只是不将卷添加到总价值中!

另外,作为一个注意事项,将实例变量设置为public和static并不是一个好主意。如果它们是私有的而不是静态的会更好。例如

    private int players;

希望答案有所帮助

答案 1 :(得分:1)

Java中编程进度的一些提示:

  1. 变量roll没有用处。 roll1等等,将为每位玩家存储最后一次滚动。

  2. 如果可能,请初始化变量。应该避免依赖默认值,因为它可能会在您学习时带来问题(NullPointerException会在某个时间访问您)。

  3. 在你的循环中,你有total1=(roll+roll1);。这是错的。您的变量total1rollroll1在程序到达此点时未初始化。因为它们是整数,所以它们(静默地)被初始化为0,因此此时total1得到0,这并没有多大成果。在此之后,您继续检索卷。尝试相反的方式,首先是滚动,然后加起来。

  4. 您提到您是Java的新手,但是,在将来的某个时候,您可能会考虑使用数组实现相同的程序。你会注意到它为你节省了很多你现在写的重复代码。

  5. 总结并转换为代码指南(适用于2位玩家):

    public class MyScoreCalculator {
        static String p1 = "";
        static String p2 = "";
        static int maxScore = 0;
        static int roll1 = 0;
        static int roll2 = 0;
        static int total1 = 0;
        static int total2 = 0;
    
        public static void main(String[] args) {
            Scanner keyboard = new Scanner(System.in);
            // Dialogue to get data...
            // Display scorecard look with players names
    
            while (total1 < maxScore && total2 < maxScore) { 
                //scorecard quits when maxScore is reached by either player
                roll1 = keyboard.nextInt(); // ask for current roll
    
                System.out.println(total1 + "+");
                System.out.println(roll1);
                System.out.println("_____");
                System.out.println(roll1 + total1);
    
                total1 = total1 + roll1;
    
                // Do the same for next player.
            }
        }
    }
    

答案 2 :(得分:0)

您的total1计算应为total1 += roll,并在新的滚动输入后发生。此外,如果roll1代表最后一个卷,则相应地命名该变量,它更具可读性。

由于您有很多玩家,请尝试抽象概念并将输入与“会计”分开。例如,您可以创建一个PlayerScore类,其中包含总计和最后一个输入(以及播放器的名称),其中包含一个方法,该方法负责添加和保存最后一个输入,以及对信息进行漂亮打印。然后,您可以拥有一个PlayerScore的集合并对其进行迭代,询问当前的滚动并更新信息。