2012-08-02 51 views
1

classMain.java這個java代碼有什麼問題? (簡單隨機數產生程序)

public class classMain 
{ 
    public static classCall classCallObject; 

    public static void main(String[] args) 
    { 
    classCallObject = new classCall(); 
    classCallObject.calling(); 
    } 
} 

classCall.java

import java.awt.CardLayout; 
import java.awt.FlowLayout; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 

public class classCall extends JFrame 
{ 
    public JFrame frame; 
    public JPanel cards; 
    public CardLayout cardlayout = new CardLayout(); 
    public static classEngine engObject = new classEngine(); 

    public void calling() 
    { 
    frame = new JFrame(); 
    frame.setVisible(true); 
    frame.setLayout(new FlowLayout()); 
    frame.setTitle("Cricket Game 2012"); 
    frame.setSize(1024, 740); 
    frame.setResizable(false); 
    frame.setDefaultCloseOperation(EXIT_ON_CLOSE);   
    gui guiObject = new gui(); 
    frame.add(guiObject.totalScore); 
    } 
} 

gui.java

import java.awt.FlowLayout; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 

public class gui extends JFrame 
{ 
    public JLabel totalScore; 

    public gui() 
    { 
    classCall.engObject.gameEngine(); 
    totalScore = new JLabel(String.format("Total is %d - %d", classCall.engObject.getTotal(), classCall.engObject.getWickets())); 
    totalScore.setLayout(new FlowLayout()); 
    } 
} 

classEngine.java

import java.util.Random; 

public class classEngine 
{ 

    public int[][] Overs = new int[20][6]; 
    public static int total=0; 
    public static int wickets=0; 

    public void gameEngine() 
    { 
    for (int over=1; over<Overs.length;over++) 
    { 
     for (int ball=1; ball<Overs[over].length; ball++) 
     { 
       Overs[over][ball] = batsmanNormalNormal(); 
       total=total + Overs[over][ball]; 
     } 
    } 
    } 

    public int batsmanNormalNormal() 
    {  
    int x=0; 
    int randomNumber = 0; 
    Random randomObject = new Random(); 
    randomNumber=randomObject.nextInt(100)+1; 

    if (randomNumber<=1 && randomNumber>=10) 
     x=4; 
    else if (randomNumber<=11 && randomNumber>=13) 
    { 
     x=0; 
     wickets++; 
    }  
    else if (randomNumber<=14 && randomNumber>=17) 
     x=1; 
    else if (randomNumber<=18 && randomNumber>=19) 
     x=1; 
    else if (randomNumber<=20 && randomNumber>=30) 
     x=2; 
    else if (randomNumber<=31 && randomNumber>=55) 
     x=1; 
    else if (randomNumber<=56 && randomNumber>=96) 
     x=0; 
    else if (randomNumber<=97 && randomNumber>=98) 
     x=6; 
    else if (randomNumber<=99 && randomNumber>=100) 
     x=3; 

    return x; 

    } 

    public int getTotal() 
    { 
    return total; 
    } 

    public int getWickets() 
    { 
    return wickets; 
    } 
} 

我試圖創建一個刺激板球比賽的java代碼。 我知道很多人可能不知道這個遊戲。基本上,我想要做的是隨機生成數字(加權概率 - 不完全隨機),並將它們添加到一個稱爲總數的靜態int。 我想使用JLabel顯示總計。

但由於某些原因,總犯規更新。它說0-0。 它應該給出像140或200其他結果,因爲我已經編碼它將隨機生成的數字添加到總數約。 120次。

我想我可能失去了一些東西。

我認爲這是顯而易見的事我這腦子空白無法讀取ATM。 有人可以幫我解決這個問題嗎? 感謝

+5

請在此填寫代碼,而不是發佈鏈接。 – Baz 2012-08-02 16:40:26

+1

沒有看代碼的瘋狂猜測..你的jpanel沒有被重新繪製?你可以打印出分數來控制檯,看看你是否真的得到了正確的分數..有兩個不同的問題..我的隨機數生成不工作?並且我的jpanel沒有顯示更新後的值?如果你能夠找出你想要回答的問題中的哪一個會非常有幫助 – 2012-08-02 16:43:14

+2

在你的'batsmanNormalNormal()'方法中,哪種情況永遠會返回true?關於那個 ?再次注意這些條件檢查,我不認爲如果一個數字小於1,它可以大於或等於10,以及在第一個條件randomNumber <= 1 && randomNumber> = 10'中給出的,請注意這些條件,他們不會出現在我的:(對以上兩個評論+1 :-) – 2012-08-02 16:44:55

回答

1

確保檢查大於和小於較小標誌是在正確的地方。

在這項計劃中,如果和if語句永遠不會執行,因爲我已經把情況永遠不會有真正的別的!

這就是爲什麼沒有更新的總成績。

+2

使用一些代碼片段..ok以適當的方式格式化您的答案 – 2012-08-02 17:13:22

相關問題