【问题标题】:Game of dice in javaJava中的骰子游戏
【发布时间】:2015-02-19 06:49:43
【问题描述】:

该计划的要求是: Antonia 和 David 正在玩游戏。

每位玩家一开始得 100 分。

该游戏使用标准的六面骰子,并以回合形式进行。在一轮中,每个玩家掷一个骰子。掷骰较低的玩家将失去较高骰子上显示的点数。如果两位玩家掷出相同的数字,则任何一位玩家都不会丢分。

编写一个程序来确定最终分数。

我想出了以下代码:

import java.util.*;
public class prob3 
{
    public static void main(String[]args)
{
        Random g=new Random();
        int a,b,c;
        int rounds;
        int antonio=100;
        int david=100;

        Scanner s=new Scanner(System.in);
        System.out.println("Please enter the no. of rounds you want to play(1-15):  ");
        rounds=s.nextInt();


        for(int d=1;d<=rounds;d++)
        {
        a=g.nextInt(6)+1;
        b=g.nextInt(6)+1;
        System.out.println("Round "+d+":"+a+" "+b);

        if(a<b)
        antonio=100-b;

        else if(a>b) 
        david=100-a;
        }
        System.out.println("Total for Antonio: "+antonio);
        System.out.println("Total for David: "+david);
        }
        }

程序最后未能计算出正确的总和。 我究竟做错了什么? 任何帮助,将不胜感激。 谢谢。

【问题讨论】:

  • 如果两个玩家掷出相同的数字,任何一个玩家都不会丢分”的条件在哪里?
  • 请澄清:您所说的“......最后未能计算出正确的总和”是什么意思?一般来说,我们不鼓励这种本质上要求我们所有人调试您的代码的问题。

标签: java


【解决方案1】:

你正在这样做。

 antonio=100-b;

当你可能想要时

antonio = antonio - b;

第一个代码只是每次从100 中减去掷骰子,这是没有意义的。您想从玩家总数中减去掷骰子。对两个玩家都这样做。

【讨论】:

  • 或者更好的是antonio -= b
  • @AndyBrown 再好不过了。不过更短。我更喜欢长途。
【解决方案2】:

如上所述,“100 - b”是您的主要问题。但是您的问题陈述中没有理由设置轮数。

我宁愿使用这样的循环:

while(antonio >= 0 && david >= 0){
    //do the same stuff here
}
System.out.println...

因为它看起来像是一些 java 课程的练习.. 这听起来可能没用但是:

  • 格式化始终是您的代码。空格、括号和制表符
  • 使用描述性变量名称。 a b c d 在较大的程序中不太直观。
  • 删除未使用的变量

Y mucha suerte tío!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-06
    • 1970-01-01
    • 2012-02-29
    • 1970-01-01
    • 2021-12-14
    • 2015-08-25
    • 2015-12-24
    相关资源
    最近更新 更多