2014-04-18 38 views
0

預期可以解決數學問題。@Overide toString with Integer。然後將setText設置爲JLabel

被一個INT我送toString

@Override 
    public String toString(){ 
    return Integer.toString(expected); 
    } 

然後我setTextJLabel

jl.setText(toString()); 

當程序運行時顯示它顯示了哈希的答案,而不是。

我假設這必須與Integer.toString但我在toString方法中調用它。

我在這裏做錯了什麼?

Driver Class 

import java.awt.EventQueue; 
import java.awt.GridLayout; 
import java.awt.event.*; 

import javax.swing.*; 

public class Driver extends MathProblems { 

    MathProblems problems = new MathProblems(); 

    String s = "Welcome Students!"; 
    String b = "Start!"; 
    private JFrame f; 
    private JPanel p; 

    JFrame frame = new JFrame(); 

    JButton b1 = new JButton(b); 

    JLabel jl = new JLabel(s); 

    int i; 

    public Driver() {  
     gui(); 
    } 

    public void gui() { 
     f = new JFrame("Flash Card Program");  
     p = new JPanel(); 
     f.setLayout(new GridLayout(2, 1)); 
     f.add(jl); 
     f.add(p); 
     p.setLayout(new GridLayout(2, 1)); 
     p.add(b1); 

     jl.setHorizontalAlignment(JLabel.CENTER); 

     // pack the frame for better cross platform support 
     f.pack(); 
     // Make it visible 
     f.setVisible(true); 
     f.setSize(560,400); // default size is 0,0 
     f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 


     b1.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e){ 
       if(b1.getText().equals("Click For Answer")) 
       { 
        problems.run(); 
        jl.setText(toString()); 
        String b = "Next Question"; 
        b1.setText(b); 
       } 
       else 
       { 
        problems.run(); 
        jl.setText(problems.getQuestion()); 
        String b = "Click For Answer"; 
        b1.setText(b); 

       } 
      } 
     }); 
    } 


    public static void main(String[] args) { 
     EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       new Driver(); 
      } 
     }); 
    } // End main Method 

} // End class Driver 

MathProblems 

import java.util.Random; 

public class MathProblems { 
    private static final int MAX_NUMBER = 10; 
    private static final Random random = new Random(); 

    private int expected = 0; 
    private String question = ""; 

    public void run() { 
     final int a = random.nextInt(MAX_NUMBER); 
     final int b = random.nextInt(MAX_NUMBER); 

     final int type = random.nextInt(4); 

     switch (type) { 
      case 0: 
       add(a, b); 
       break; 
      case 1: 
       subtract(a, b); 
       break; 
      case 2: 
       multiply(a, b); 
       break; 
      case 3: 
       divide(a, b); 
       break; 
     } 
    } 

    private void add(final int a, final int b) { 
     expected = a + b; 

     askQuestion(a + " + " + b + " = "); 
    } 

    private void subtract(final int a, final int b) { 
     expected = a - b; 

     askQuestion(a + " - " + b + " = "); 
    } 

    private void multiply(final int a, final int b) { 
     expected = a * b; 

     askQuestion(a + " * " + b + " = "); 
    } 

    private void divide(final int a, final int b) { 
     expected = a/b; 

     askQuestion(a + "/" + b + " = "); 
    } 

    private void askQuestion(final String question) { 
     this.question = question; 
    } 

    public String getQuestion() { 
     return question; 
    } 

    public int getAnswer() { 
     return expected; 
    } 

    @Override 
    public String toString(){ 
    return Integer.toString(expected); 
    } 
} 
+0

你沒有表現出遠遠不夠的代碼。我懷疑''toString()'覆蓋是在一個不同於你調用'setText'的類上。也許你的意思是'jl.setText(someObject.toString())'。 – chrylis

+0

您可以使用String.valueOf(預期); – Arjit

+0

是的,它是在不同的類。我加了我所有的代碼 – wuno

回答

2

您需要將其更改爲:

if(b1.getText().equals("Click For Answer")) 
      { 
       problems.run(); 
       jl.setText(problems.toString()); // note the change here 
       String b = "Next Question"; 
       b1.setText(b); 
      } 
      else 
      { 
       problems.run(); 
       jl.setText(problems.getQuestion()); // and how you got it right here 
       String b = "Click For Answer"; 
       b1.setText(b); 

      } 
+0

謝謝你修復它...現在我有另一個問題。哈哈答案與數學問題不正確 – wuno

相關問題