gpt4 book ai didi

java - 计算一个值来更新 JProgressBar

转载 作者:行者123 更新时间:2023-12-01 12:48:15 25 4
gpt4 key购买 nike

我想在 JProgressBar 中显示初始值的比例。

    private void updateProgressBars() { //Update the progress bars to the new values.
int p1 = 0, p2 = 1; //Player numbers
double p1Progress = (intPlayer1Tickets/intInitialPlayer1Tickets) * 100;
double p2Progress = (intPlayer2Tickets/intInitialPlayer2Tickets) * 100;
progressbarPlayerTickets[p1].setValue((int) p1Progress);
progressbarPlayerTickets[p1].setString("Tickets left: " + Integer.toString(intPlayer1Tickets));
progressbarPlayerTickets[p2].setValue((int) p2Progress);
progressbarPlayerTickets[p2].setString("Tickets left: " + Integer.toString(intPlayer2Tickets));
}

在此代码中,目的是计算玩家剩余门票数量的百分比。 intInitialPlayer1TicketsintInitialPlayer2Tickets 均设置为 50。然后 intPlayer1TicketsintPlayer2Tickets 设置为其各自的初始门票值 (即都设置为 50)。当我从 intPlayer1TicketsintPlayer2Tickets 中减去任何数字(例如 intPlayer1Tickets = 49intInitialPlayer1Tickets = 50)时,它们各自的值进度条的值将设置为 0,这不是我的意图。两个进度条的最小值和最大值都设置为 0 和 100。

那么我该如何制作才能反射(reflect)剩余门票的百分比?

最佳答案

您正在进行整数数学运算,然后将其转换为 double 。在整数数学中,当您将一个数字除以一个更大的数字时,答案始终是 0。

您希望 Java 使用 float 而不是整数进行数学运算。最简单的方法是将除数设为 double 。

当您运行此代码时

public class Numbers{
public static void main(String []args){
int five = 5;
int ten = 10;
System.out.println(five/ten);
System.out.println(five/(double)ten);
System.out.println((five/(double)ten)*100);
}
}

你得到这个作为输出

0
0.5
50.0

所以,回答你的问题你想要的是这样的

double p1Progress = (intPlayer1Tickets/(double)intInitialPlayer1Tickets) * 100; 

但是你可以使用 float 而不是 double 。

关于java - 计算一个值来更新 JProgressBar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24472769/

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