2012-08-02 1 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, называемому total. Я хочу показать Total с помощью JLabel.

Но по какой-то причине общая сумма не обновляется. Он говорит 0-0. Он должен давать другие результаты, такие как 140 или 200, потому что я закодировал его, чтобы добавить произвольно сгенерированные числа в общую ок. 120 раз.

Возможно, я что-то упустил.

Я думаю, что это нечто очевидное, что мой пустой мозг не может читать атм. Может ли кто-нибудь помочь мне с этим? Thanks

+5

Пожалуйста, добавьте сюда код, а не размещайте ссылку на него. – Baz

+1

Дикое предположение, не глядя на код. Ваш jpanel не перекрашивается? вы можете распечатать счет до консоли, чтобы узнать, действительно ли вы получили правильный счет. Есть два разных вопроса. Мое случайное число поколений не работает? и мой jpanel не показывает обновленное значение? .. это очень помогло бы, если бы вы могли выяснить, какой из этих вопросов вы хотите получить. –

+2

Внутри вашего метода 'batsmanNormalNormal()', какое условие когда-либо вернет true, если бы вы подумали об этом ? Повторите проверку этих условий, я не думаю, что если число меньше 1, оно может быть больше или равно 10, а также дано вами в первом условии «randomNumber <= 1 && randomNumber> = 10', действительно наблюдайте за этими условиями, они мне не кажутся мне :(+1 к обоим вышеперечисленным комментариям :-) –

ответ

1

Удостоверьтесь, что проверьте, что знаки больше и меньше, чем знаки в нужном месте.

В этой программе инструкции if и else if никогда не выполняются, потому что условия, которые я поставил там, никогда не верны!

Именно поэтому общая оценка не обновляется.

+2

правильно отформатируйте свой ответ с помощью некоторого фрагмента кода. –