数据单位转换工具java代码

2024-11-29 17:23:57
推荐回答(2个)
回答1:

import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;

public class UnitTransfer extends JFrame{
    private final int WIDTH = 400, HEIGHT = 300;//窗口默认的宽度、高度
    
    private JLabel lblInUnit=new JLabel("输入单位");
    private JComboBox cboIn=new JComboBox(new String[]{"", ""});
    private JLabel lblIn=new JLabel("输入数值");
    private JTextField txtIn=new JTextField("10");
    
    private JLabel lblOutUnit=new JLabel("输出单位");
    private JLabel lblResult=new JLabel("显示结果");
    private JLabel txtResult=new JLabel("结果");
    private JComboBox cboOut=new JComboBox(new String[]{"", ""});
    
    private JButton btnTrans = new JButton("转换");
    private JButton btnClear = new JButton("清空");
    
    private JRadioButton rdLeng = new JRadioButton("长度");
    private JRadioButton rdWeig = new JRadioButton("时间");
    private String [] lengthUnit={"米", "分米", "厘米", "毫米"};
    private String [] timeUnit={"天", "时", "分", "秒"};
    
    public UnitTransfer(){
        super("简单的单位转换器 Beta");
        this.setSize(WIDTH, HEIGHT);
        this.setLayout(null);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        ButtonGroup group = new ButtonGroup();
        group.add(rdLeng);
        group.add(rdWeig);
        this.getContentPane().add(rdLeng);
        this.getContentPane().add(rdWeig);
        this.getContentPane().add(btnTrans);
        this.getContentPane().add(btnClear);
        this.getContentPane().add(lblIn);
        this.getContentPane().add(txtIn);
        this.getContentPane().add(lblInUnit);
        this.getContentPane().add(cboIn);

        this.getContentPane().add(lblResult);
        this.getContentPane().add(txtResult);
        this.getContentPane().add(lblOutUnit);
        this.getContentPane().add(cboOut);
        this.setVisible(true);
        this.doLayout();
        btnTrans.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                doConvert();
            }
        });
        btnClear.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                txtIn.setText("0");
                txtResult.setText("0");
            }
        });
        rdLeng.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                cboIn.setModel(new DefaultComboBoxModel(lengthUnit));
                cboOut.setModel(new DefaultComboBoxModel(lengthUnit));
            }
        });
        rdWeig.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                cboIn.setModel(new DefaultComboBoxModel(timeUnit));
                cboOut.setModel(new DefaultComboBoxModel(timeUnit));
            }
        });
        rdLeng.setSelected(true);
        cboIn.setModel(new DefaultComboBoxModel(lengthUnit));
        cboOut.setModel(new DefaultComboBoxModel(timeUnit));
    }
    final int offX=100;
    public void doLayout(){
        super.doLayout();
        
        rdLeng.setBounds(offX, 15, 60, 20);
        rdWeig.setBounds(rdLeng.getX()+rdLeng.getWidth()+5, 15, 60, 20);
        
        lblInUnit.setBounds(offX, rdLeng.getY()+rdLeng.getHeight()+20, 80, 20);
        cboIn.setBounds(lblInUnit.getX()+lblInUnit.getWidth()+5, lblInUnit.getY(), 80, 20);
        lblIn.setBounds(offX, lblInUnit.getY()+lblInUnit.getHeight()+5, 80, 20);
        txtIn.setBounds(lblIn.getX()+lblIn.getWidth()+5, lblIn.getY(), 80, 20);
        
        lblOutUnit.setBounds(offX, lblIn.getY()+lblIn.getHeight()+30, 80, 20);
        cboOut.setBounds(lblOutUnit.getX()+lblOutUnit.getWidth()+5, lblOutUnit.getY(), 80, 20);
        lblResult.setBounds(offX, cboOut.getY()+cboOut.getHeight()+5, 80, 20);
        txtResult.setBounds(lblResult.getX()+lblResult.getWidth()+5, lblResult.getY(), 100, 20);
        
        int w=getWidth ();
        int x=(w-70*2-5)/2;//水平居中
        btnTrans.setBounds(x, lblResult.getY()+lblResult.getHeight()+30, 70, 25);
        btnClear.setBounds(btnTrans.getX()+btnTrans.getWidth()+3, btnTrans.getY(), 70, 25);
    }
    public void doConvert(){
        double v=0;
        try{
            v= Double.parseDouble(txtIn.getText());
        }catch(Exception ex){
            txtIn.setText("0");
            return;
        }
        //"米", "分米", "厘米", "毫米"
        if(rdLeng.isSelected()){
            switch(cboIn.getSelectedIndex()){
                case 0:
                    break;
                case 1:
                    v=v/10;
                    break;
                case 2:
                    v=v/100;
                    break;
                case 3:
                    v=v/1000;
                    break;
                default:
                    return;
            }
            //v 现在是标准单位:米
            switch(cboOut.getSelectedIndex()){
                case 0:
                    break;
                case 1:
                    v=v*10;
                    break;
                case 2:
                    v=v*100;
                    break;
                case 3:
                    v=v*1000;
                    break;
                default:
                    return;
            }
            if(v<0.01){
                txtResult.setText(String.format("%2.8f", v));
            }else{
                txtResult.setText(String.format("%2.2f", v));
            }
        }else{
        //"天", "时", "分", "秒"
            switch(cboIn.getSelectedIndex()){
                case 0:
                    v=v*24;
                    break;
                case 1:
                    break;
                case 2:
                    v=v/60;
                    break;
                case 3:
                    v=v/3600;
                    break;
                default:
                    return;
            }
            //v 现在是标准单位:小时
            switch(cboOut.getSelectedIndex()){
                case 0:
                    v=v/24;
                    break;
                case 1:
                    break;
                case 2:
                    v=v*60;
                    break;
                case 3:
                    v=v*3600;
                    break;
                default:
                    return;
            }
            if(v<0.01){
                txtResult.setText(String.format("%2.8f", v));
            }else{
                txtResult.setText(String.format("%2.8f", v));
            }
        }
    }
    
    public static void main(String[] args){
        EventQueue.invokeLater(new Runnable()  {
            public void run()   {
                new UnitTransfer();
            }
        });
    }
}



//请参考,欢迎指正

回答2:

先给你来哥简单版的看看:按钮版的也就是画界面
public static void main(String[] args) {
String[] type1 = {"米","分米","厘米","毫米"};
String[] type2 = {"小时","分","秒"};
boolean isgn = true;
while(isgn){
try {
Scanner kin = new Scanner(System.in);
System.out.print("选择转换类型(1长度,2时间):");
int type = kin.nextInt();
int num,dw1,dw2;
if(type == 1){
System.out.print("输入数据:");
num = kin.nextInt();
System.out.print("选择单位(1米,2分米,3厘米,4毫米):");
dw1 = kin.nextInt();
System.out.print("选择要转换单位(1米,2分米,3厘米,4毫米):");
dw2 = kin.nextInt();
System.out.println(num+type1[dw1-1]+"="+num * Math.pow(10,dw2 - dw1)+type1[dw2-1]);
}else if (type == 2){
System.out.print("输入数据:");
num = kin.nextInt();
System.out.print("选择单位(1时,2分,3秒):");
dw1 = kin.nextInt();
System.out.print("选择要转换单位(1时,2分,3秒):");
dw2 = kin.nextInt();
System.out.println(num+type2[dw1-1]+"="+num * Math.pow(60,dw2 - dw1)+type2[dw2-1]);
}else{
System.out.println("输入类型错误");
}
System.out.print("是否继续(1结束,其他继续:)");
String str = kin.next();
if("1".equals(str))
isgn = false;
} catch (Exception e) {
System.out.println("输入类型错误,重新输入!");
continue;
}
}
}