gpt4 book ai didi

java - 计算百分比 "x/y * 100"总是得到 0?

转载 作者:搜寻专家 更新时间:2023-11-01 04:02:05 25 4
gpt4 key购买 nike

在我的作业中,我必须制作一个简单版本的 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;

至:-

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

有两件事需要考虑:-

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

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

    因此,只需更改 */ 的顺序即可使 * 发生首先。

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

关于java - 计算百分比 "x/y * 100"总是得到 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13338531/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com