簡體   English   中英

計算值以更新JProgressBar

[英]Calculate a value to update JProgressBar

我想在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。

那么,我將如何做到這一點呢?它將以百分比形式反映剩余門票的比例?

您正在做整數數學,然后將其轉換為雙精度。 在整數數學中,當您將數字除以更大的數字時,答案始終為0。

您想讓Java使用浮點數而不是整數來進行數學運算。 最簡單的方法是將除數加倍。

當您運行此代碼時

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代替雙精度就可以了。

演員的價值intPlayer1TicketsintPlayer2TicketsintInitialPlayer1TicketsintInitialPlayer2Ticketsdouble你計算之前 如:

    double p1Progress = (((double) intPlayer1Tickets)/((double) intInitialPlayer1Tickets)) * 100;
    double p2Progress = (((double) intPlayer2Tickets)/((double) intInitialPlayer2Tickets)) * 100;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM