计算百分比“x/y * 100”总是结果为 0?

2024-01-03

在我的作业中,我必须制作一个简单版本的 Craps,由于某种原因,即使两个变量都不为 0,百分比赋值也总是产生 0,这是代码。

import java.util.Random;

标题,注意变量

public class Craps {
private int die1, die2,myRoll ,myBet,point,myWins,myLosses;
private double winPercent,lossPercent;
private Random r = new Random();

只需滚动两个模具并生产一些即可。

public int roll(){
    die1 = r.nextInt(6)+1;
    die2 = r.nextInt(6)+1;
    return(die1 + die2);
}

Play 方法,这只是循环游戏。

public void play(){
    myRoll = roll();
    point = 0;

    if(myRoll == 2 ||myRoll == 3 || myRoll == 12){
        System.out.println("You lose!");
        myLosses++;
    }else if(myRoll == 7 || myRoll == 11){
        System.out.println("You win!");
        myWins++;
    }else{
        point = myRoll;
        do {
            myRoll = roll();
        }while(myRoll != 7 && myRoll != point);
        if(myRoll == point){
            System.out.println("You win!");
            myWins++;
        }else{
            System.out.println("You lose!");
            myLosses++;
        }
    }
}

这就是错误所在,这就是测试方法。

public void tester(int howMany){
    int i = 0;
    while(i < howMany){
        play();
        i++;
    }

错误就在这些赋值语句中

    winPercent = myWins/i * 100;
    lossPercent = myLosses/i* 100;
    System.out.println("program ran "+i+" times "+winPercent+"% wins "+ lossPercent+"% losses with "+myWins+" wins and "+myLosses+" losses");



}

}


可能是因为您正在进行整数除法,并且分母大于分子。所以该值将为零。

您可以更改此分配:-

winPercent = myWins/i * 100;
lossPercent = myLosses/i* 100;

to: -

winPercent = myWins * 100.0/i;
lossPercent = myLosses * 100.0/i;

有两件事需要考虑:-

  • 要么通过强制转换使您的除法成为浮点除法 你的分子float: -

    winPercent = (float)(myWins)/i * 100;
    
  • 另外,在整数除法的情况下,问题是关联性 and 优先级. Since * and / have 相同的优先级, 和 有从左到右的关联性. So, myWins / i将 首先评价。所以,这个值很有可能是 0。

    所以,只需改变顺序* and /使*发生 第一的。

注意,我用过100.0在乘法中。因为乘以100将再次导致截断.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算百分比“x/y * 100”总是结果为 0? 的相关文章

随机推荐

  • 错误:require.paths 被删除。当运行node.js和socket.io时

    javascript Iv 在运行 github 上的 socket io 示例时遇到错误https github com LearnBoost socket io git https github com LearnBoost socke
  • 制作随机整数数组

    我尝试生成一个随机 int 值数组 其中随机值在最小值和最大值之间取 到目前为止我想出了这段代码 int Min 0 int Max 20 int test2 new int 5 Random randNum new Random fore
  • 刷新关系而不重新加载模型

    我有这样的情况 1 model 模型 where someCondition 在上面的代码之后 我对 model 子关系进行了一些更新 模型具有设置关系 因此我更新它们并将它们保存到数据库中 然后我稍后尝试访问 model gt setti
  • Spring transactionManager 正在回滚,而 testException=[null]!

    为什么事务没有回滚Exception 未保存该对象 我定义了交易参数 例如 Transactional value transactionManager timeout 30 rollbackFor java lang Exception
  • 如何将网站上不存在的链接重定向回主页

    我的问题是如何将我的网站上任何不存在的链接重定向回主页 例如 想象一下 如果用户输入 我的网站上有一个名为 pets 的页面 http mywebsite com pets http mywebsite com petsd http myw
  • 如何制作flutter自定义下拉按钮?

    我要定制DropDownButton https docs flutter io flutter material DropdownButton class html 这样它就不会渲染内容DropdownItem https api flu
  • 如果高度不同,如何使用 Twitter Bootstrap 制作响应式照片网格

    如何使用 Twitter Bootstrap 3 的 img 响应式 图像 但允许它们具有设定的高度 以便照片网格流动 与下图不同 我尝试过设置图像高度属性和最大高度属性 但它似乎会忽略这些属性 除非我用 重要 设置它的高度 但它们看起来很
  • 使用 @FindBy 注解在元素内查找元素。

    例如 WebElement parentEle driver findElement By id xyz WebElement childEle parentEle findElement By id abc childEle click
  • 多次上传php脚本并存储在mysql数据库中

    我是新来的 我需要将多个 mp3 文件上传到一个目录并将它们存储在 mysql 的 音频 表中 我正在使用这个脚本 但它只适用于一个文件 每次只处理一个曲目很烦人 这就是为什么我需要多个上传脚本 我希望只写每首曲目的标题 如下所示 php
  • 如何在 docker-compose.yml 中为命名卷设置主机上的路径

    下面的示例创建dbdata命名卷并在内部引用它db服务 version 2 services db image mysql volumes dbdata var lib mysql volumes dbdata driver local f
  • 调用成员函数指针

    我在调用结构体内部的函数指针时遇到问题 我之前在类之外使用过这种方法 但现在我正在使用指向其他类方法的函数指针在类方法中尝试它 我收到编译器错误 这是我的课程 class Myclass int i void cmd1 int void c
  • 使用 Appbar + Drawer 时遇到问题(Material UI + ReactJS)

    我正在尝试使用 ReactJS Material UI 制作我的第一个应用程序 但没有成功 我唯一想做的就是 当我单击栏上的按钮时 显示左侧抽屉 我有以下代码 App jsx import React from react import M
  • 将提交从一个存储库推送到另一个存储库

    我是否可以将一个提交从一个 Git 存储库推送到一个分支anotherGit 存储库 例如 我有一个承诺aaaa在存储库 A 中提交aaaa位于一个名为 测试 的分支中 我想推动提交aaaa到一个名为 稳定 的分支 该分支位于另一个名为存储
  • Angular2 测试在模拟服务时失败

    尝试测试具有调用 REST API 的服务依赖项的组件 制作了服务的模拟版本 并使用扩展真实服务的类 现在 如果我用模拟的提供者覆盖提供者 业力报告者就会出现奇怪的错误 第一个 404 表示 2 个不存在的文件 实际上不应该存在 然后是 o
  • jQuery 查找输入类型(也适用于选择)

    我需要找到单选按钮 文本和选择的输入类型 很容易找到任何东西的输入类型
  • 将文本输入解释为 PHP

    我想让用户测试我的 PHP 类 其中包括裁剪图像和调整图像大小 我希望他们在文本字段中编写 PHP 代码 发送表单 然后运行他们的代码 我怎样才能做到这一点 或者是否还有其他安全的方法可以让用户 任何人 演示 PHP 类 我将使用几乎没有权
  • 无法在 Python 中打乱列表

    这是我的清单 biglist title U2 link u2 com title beatles link beatles com print random shuffle biglist 那不行 它不返回任何内容 random shuf
  • 暂时更改 Sitecore 项目的布局

    使用此代码 我设法更改当前项目的渲染 然而 这在 Sitecore 中永久地改变了它 这些变化可以在 CMS 中看到 而不是像我预期的那样暂时改变 void ReplaceLayout Item item if item null retu
  • 查找与 DST 时间的 timedelta 差异 (Python)

    给定两个日期时间 例如2020 01 01 00 00 00 and 2020 04 01 00 00 00 我想获取两个日期之间以小时数表示的时间增量由于夏令时而进行任何加法 减法 我不知道如何继续 默认情况下 Python 的timed
  • 计算百分比“x/y * 100”总是结果为 0?

    在我的作业中 我必须制作一个简单版本的 Craps 由于某种原因 即使两个变量都不为 0 百分比赋值也总是产生 0 这是代码 import java util Random 标题 注意变量 public class Craps privat