2016-11-11 106 views
0

我正在模擬一個模擬足球比賽的程序。我有一個按鈕,當我點擊它時,隨機兩個隊中的一個會給出一個點。所以,一次點擊後,得分可以是1-0或者0-1,並且在兩次2-0,0-2或者1-1之後。如何在每次JButton點擊後增加一個變量?

問題是,每次點擊時,它都是0-1或1-0。所以這個分數不值得信賴。

我知道原因是我說int homescore = 0int awayscore = 0在'行動執行'的代碼。在0-0之後,它隨機給出了一個球隊的一分。所以當我第二次點擊按鈕時,分數將從0-0開始,而不是新的分數。

有人知道我該如何解決這個問題嗎?也許這很容易,但我沒有經常編程。

這是我講的代碼的一部分:

private void resultbuttonActionPerformed(java.awt.event.ActionEvent evt) {            
    Random dice = new Random(); 
    int number; 
    int homescore = 0; 
    int awayscore = 0; 
    for (int counter =1; counter<=1; counter++){ 
     number = dice.nextInt(2);     // Creates a 0 or a 1 
     if (number == 1){       // If 1: Point to home team 
      homescore = ++homescore;}    
     else {          // If 0: Point to away team 
      awayscore = ++awayscore; 
        } 
     } 


    homescorelabel.setText(String.valueOf(homescore)); 
    awayscorelabel.setText(String.valueOf(awayscore)); 
+0

因爲你想從一個點擊保持變量的值到另一個,將它們存儲爲您的類的成員變量。 – pathfinderelite

+0

'homescore = ++ homescore;'是多餘的。你只能做'homescore ++';''awayscore'也一樣。 – QBrute

回答

0

正如你所解釋的,有

int homescore = 0; 
int awayscore = 0; 
在執行會一直增加一個值從零開始你的行動

。你需要做的是獲得現有的價值,並增加一個。有兩種簡單的方式來做到這一點。

  1. 設置一個字段變量來存儲homescore和awayscore並從中增加。

    class GameClass { 
        private int homescore = 0; 
        private int awayscore = 0; 
    
        private void resultbuttonActionPerformed(java.awt.event.ActionEvent evt) {            
         Random dice = new Random(); 
         int number; 
         for (int counter =1; counter<=1; counter++){ 
          number = dice.nextInt(2);     // Creates a 0 or a 1 
          if (number == 1){       // If 1: Point to home team 
           homescore = ++homescore; 
          } else {          // If 0: Point to away team 
           awayscore = ++awayscore; 
          } 
         } 
        homescorelabel.setText(String.valueOf(homescore)); 
        awayscorelabel.setText(String.valueOf(awayscore)); 
    } 
    } 
    

注意,我剛纔所示的類在這裏(GameClass)。當您遞增其中一個分數時,您將遞增該字段,以便爲每個按鈕單擊而保留該分數。

  1. 從標籤中獲取當前得分。

    private void resultbuttonActionPerformed(java.awt.event.ActionEvent evt) {            
        Random dice = new Random(); 
        int number; 
        int homescore = Integer.parseInt(homescorelabel.getText()); 
        int awayscore = Integer.parseInt(awayscorelabel.getText()); 
        for (int counter =1; counter<=1; counter++){ 
         number = dice.nextInt(2);     // Creates a 0 or a 1 
         if (number == 1){       // If 1: Point to home team 
          homescore = ++homescore; 
         } else {          // If 0: Point to away team 
          awayscore = ++awayscore; 
         } 
        } 
        homescorelabel.setText(String.valueOf(homescore)); 
        awayscorelabel.setText(String.valueOf(awayscore)); 
    } 
    
+0

謝謝你的好解釋!現在我有我想要的東西,所以它的工作。感謝您的幫助! :) – lakeviking

0

只是把分數變成你的主要方法/類。 另外,不需要for循環,因爲它只運行一次。

0
int homescore = 0; 
int awayscore = 0; 

你重新定義它每一次 - >嘗試設置輸出H方法。

相關問題