Java @用整数覆盖到字符串。然后将setText设置为JLabel

Java @用整数覆盖到字符串。然后将setText设置为JLabel,java,tostring,Java,Tostring,期望得到一道数学题的答案 作为一个int,我正在向字符串发送 @Override public String toString(){ return Integer.toString(expected); } 然后我将setText设置为JLabel jl.setText(toString()); 当程序运行而不是显示答案时,它会显示哈希 我假设这必须与Integer.toString一起使用,但我在toString方法中调用它 我做错了什么 Driver

期望得到一道数学题的答案

作为一个int,我正在向字符串发送

   @Override
     public String toString(){
     return Integer.toString(expected);
     }
然后我将
setText
设置为
JLabel

 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);
     }
}

您需要将其更改为:

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);

            }

您没有显示足够的代码。我怀疑
toString()
重写与调用
setText
的类位于不同的类上。也许您的意思是
jl.setText(someObject.toString())
。您可以使用String.valueOf(预期);是的,它在另一个班级。我把我所有的钱都加进去了code@Arjit你是说像这样?jl.setText(toString());而是执行jl.setText.String.valueOf(预期)???您需要从侦听器中的第一个条件中删除“problems.run()”,否则您将得到下一个问题的“答案”,依此类推。同样,考虑在你的DIVE()方法中使用双打,通过使用你将失去小数。现在我有另一个问题。哈哈,数学题的答案不正确