Java @用整数覆盖到字符串。然后将setText设置为JLabel
期望得到一道数学题的答案 作为一个int,我正在向字符串发送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
@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()方法中使用双打,通过使用你将失去小数。现在我有另一个问题。哈哈,数学题的答案不正确