把int a2 =Integer.parseInt(tf2.getText());放到actionPerformed(ActionEvent e){}里边才对。
花浓花浅是正解。
你看看你的逻辑,只有判断了e.getSource()==b2之后,才有必要执行tf2.getText();你的程序当按下“得到一个随机数”时,就执行tf2.getText()了,没有必要,而且此时tf2中根本没有输入,所以抛出了java.lang.NumberFormatException.由于java默认初始化int值为0,所以此时a=0.你输入0时会看到显示“猜对了”。
一般框架都直接继承javax.swing.JFrame。
够详细吧。
你改成我这样试试嘛,我都运行了,能才对数字
经过测试,可行
import java.awt.*;
import java.awt.event.*;
public class MyFrame extends Frame implements ActionListener {
int a;
Button b1 = new Button("得到一个随机数");
TextField tf1 = new TextField(10);
TextField tf2 = new TextField(10);
Button b2 = new Button("确定");
public MyFrame(String s ) {
super(s);
setLayout(new FlowLayout());
tf1.setBackground(Color.CYAN);
add(b1);
add(tf1);
add(tf2);
add(b2);
b1.addActionListener(this);
b2.addActionListener(this);
setSize(200,200);
setVisible(true);
validate();
}
public void actionPerformed(ActionEvent e)
{
//String s2 =tf2.getText();
int a2 =Integer.parseInt(tf2.getText());
if(e.getSource()==b1)
{
a =(int)((Math.random()*100)+1);
}
else {
if(e.getSource()==b2)
{
if(a>a2)
{
tf1.setText("猜小了");
}
else
{
if(a
tf1.setText("猜大了");
}
else
{
tf1.setText("猜对了");
}
}
}
}
}
public static void main(String arg[])
{
String s = null;
MyFrame myframe = new MyFrame(s);//实例化MyFrame
}
}
import java.awt.*;
import java.awt.event.*;
import javax.swing.JFrame;
public class MyFrame extends Frame implements ActionListener {
private int a;
JFrame jf=new JFrame ("猜数");
Button b1 = new Button("得到一个随机数");
TextField tf1 = new TextField(10);
TextField tf2 = new TextField(10);
Button b2 = new Button("确定");
public MyFrame(){
jf.setLayout(new FlowLayout());
tf1.setBackground(Color.CYAN);
jf.add(b1);
jf.add(tf1);
jf.add(tf2);
jf.add(b2);
b1.addActionListener(this);
b2.addActionListener(this);
jf.setLocation(300, 200);//设置窗口出现位置
jf.setSize(300,200);//设置窗口大小
jf.setVisible(true);//设置可见
//要先加组件再设置可见,否则不起作用
jf.setResizable(false);//设置窗口大小不可变
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==b1)
{
a =(int)((Math.random()*100)+1);
System.out.println("a的值为:"+a);//用于检测
}else if(e.getSource()==b2){
int a2 =Integer.parseInt(tf2.getText());
if(a>a2){
tf1.setText("猜小了");
}else if(a
}else{
tf1.setText("猜对了");
}
}
}
public static void main(String[] args) {
new MyFrame();
}
}
你的代码缺少main函数,所以找不到public入口点
那就看你怎么想了,我给你几个建议,因为我没有时间帮你实现。
建议一:简单实现法:你把每种书名、价格、厂家都作为一个对象的属性分别存到不同的对象中,在主函数中首先用构造方法实例化这几个对象,然后再用你输入的字符串和每个对象的相应属性一一比对,符合条件则输出对应的厂家。
建议二:比较复杂实现法:信息全部保存到数据库,然后再用你输入的字符串和每条记录的相应字段一一比对,符合条件则输出对应的厂家。
如果你对我真诚的回答满意的话,请给我多加分,如果有什么疑问的话,请给我留言。QQ也可以全天在线108424683.