我不会JAVA,他问我,我问你们~~
设计一个如图所示的换算器程序。其中换算公式如下:
华氏温度转摄氏温度:C=5*(F-32)/9
摄氏温度转华氏温度:F=32+C*9/5
英里转公里:KM=miles/0.62
公里转英里:mile=0.62*KM

解决方案 »

  1.   

    我记得java core中好像有类似的计算器,只不过书上的例子是简单的四则运算
    楼主可以去找来看看,大同小异
      

  2.   

    以前做过java计算器,好像就是用按钮事件来安成的
      

  3.   

    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    public class Mymain implements ActionListener
    {
    JFrame jf=new JFrame("转换器");
    JPanel jp=new JPanel();
    JLabel jl1=new JLabel("输入数据");
    JLabel jl2=new JLabel("转换数据");
    JLabel jl3=new JLabel("选择转换关系:");
    JTextField jt1=new JTextField();
    JTextField jt2=new JTextField();
    JButton jb[]={new JButton("1"),new JButton("2"),new JButton("3"),new JButton("4"),new JButton("5"),
                  new JButton("6"),new JButton("7"),new JButton("8"),new JButton("9"),new JButton("0"),
                  new JButton("C"),new JButton("S")};//C按钮是实现转换功能,S按钮实现的是清空功能.
    JRadioButton jrb[]={new JRadioButton("摄氏温度换算为华氏温度"),new JRadioButton("华氏温度换算为摄氏温度"),
                        new JRadioButton("公里数换算为英里数"),new JRadioButton("英里数换算为公里数")};
    ButtonGroup bg=new ButtonGroup();
    private double C;
    private double F;
    private double KM;
    private double mile;
        public int a=0,b=0,j=0,m=0,s1=1;
        public String s="";
    public Mymain()
    {
    jp.setLayout(null);
    jl1.setBounds(30,10,60,20);
    jp.add(jl1);
    jt1.setBounds(90,10,80,20);
    jp.add(jt1);
    jl2.setBounds(185,10,60,20);
    jp.add(jl2);
    jt2.setBounds(245,10,80,20);
    jp.add(jt2);
    jl3.setBounds(25,50,150,20);
    for(int i=0;i<12;i++)
    {
    if(i==0)
    {
        jb[i].setBounds(285,50,50,20);
        jp.add(jb[i]);
        jb[i].addActionListener(this);
    }
    else if(i%3!=0)
    {
    ++a;
    jb[i].setBounds(285+a*50,50+j*30,50,20);
    jp.add(jb[i]);
    jb[i].addActionListener(this);
    }
    else
    {
    j++;
    a=0;
    jb[i].setBounds(285,50+j*30,50,20);
    jp.add(jb[i]);
    jb[i].addActionListener(this);
    }

    }
    for(int i=0;i<4;i++)
    {
    jrb[i].setBounds(25,70+i*20,250,20);
    bg.add(jrb[i]);
    jp.add(jrb[i]);
    jrb[i].addActionListener(this);
    }
    jp.add(jl3);
    jf.add(jp);
    jf.setVisible(true);
    jf.setBounds(10,10,500,300);

    }
    public void actionPerformed(ActionEvent e)
    {
    for(int i=0;i<12;i++)
    {
    if(e.getSource()==jb[i]&&i<9)
    {

    s=s+(i+1);
    jt1.setText(s);
    }
    else if(e.getSource()==jb[10])
    {
    try
    {
    b=Integer.parseInt(jt1.getText().trim());
    if(jrb[0].isSelected())
    {
    C=5*(b-32)/9;
    s="";
    s=s+C;
    jt2.setText(s);
    }
    else if(jrb[1].isSelected())
    {
    F=32+b*9/5;
    s="";
    s=s+F;
    jt2.setText(s);
    }
    else if(jrb[2].isSelected())
    {
    KM=b/0.62;
    s="";
    s=s+KM;
    jt2.setText(s);
    }
    else if(jrb[3].isSelected())
    {
    mile=b*0.62;
    s="";
    s=s+mile;
    jt2.setText(s);
    }
    }
    catch (Exception ee){}
    }
    else if(e.getSource()==jb[11])
    {
    jt1.setText("");
    jt2.setText("");
    s="";
    }

     
    else if(e.getSource()==jb[9])
    {
    //s1="0";
    s=s+(s1-1);
    jt1.setText(s);
    }
        }
    }
    public static void main(String[] args)
    {

    Mymain m=new Mymain();
    }
    }