我来我网
https://5come5.cn
 
您尚未 登录  注册 | 菠菜 | 软件站 | 音乐站 | 邮箱1 | 邮箱2 | 风格选择 | 更多 » 
 

本页主题: [原创][JAVA]十进制到二进制转换器 显示签名 | 打印 | 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题

joesee



性别: 帅哥 状态: 该用户目前不在线
等级: 栋梁之材
发贴: 630
威望: 0
浮云: 1110
在线等级:
注册时间: 2005-11-02
最后登陆: 2008-06-28

5come5帮你背单词 [ regenerative /ri'd3əenəreitiv/ a. 再生的,更生的 ]


[原创][JAVA]十进制到二进制转换器

有个同学在做微机原理作业时要转换N位二进制小数,而一般的转换软件只有整数转换,
就帮他做了一个冬冬。








代码
Copy code

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import java.awt.Toolkit;

public class Converse {
  //声明各组件
  JFrame frame = new JFrame();
  JPanel contentPane;
  JLabel jLabel1 = new JLabel();
  JLabel jLabel2 = new JLabel();
  JTextField numField = new JTextField();
  JTextField lengthField = new JTextField();
  JLabel jLabel3 = new JLabel();
  JButton jButton1 = new JButton();
  JTextArea outPutArea = new JTextArea();
  JScrollPane jScrollPane1 = new JScrollPane();
  JOptionPane message = new JOptionPane();
 
  //使窗体居中显示的方法
  public void centerWindow(){
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        Dimension frameSize = frame.getSize();
        if (frameSize.height > screenSize.height) {
          frameSize.height = screenSize.height;
        }
        if (frameSize.width > screenSize.width) {
          frameSize.width = screenSize.width;
        }
        frame.setLocation((screenSize.width - frameSize.width) / 2,
                    (screenSize.height - frameSize.height) / 2);
        frame.setVisible(true);
  }
 
  //面板和组件初始化
  public Converse() {    
    contentPane = (JPanel) frame.getContentPane();
    contentPane.setLayout(null);
    frame.setSize(new Dimension(400, 300));
    frame.setTitle("十进制 -> 二进制");
    frame.setResizable(false);
    jLabel1.setText("请输入一个正数,例如 24.74:");
    jLabel1.setBounds(new Rectangle(30, 34, 188, 26));
    jLabel2.setText("输出的二进制数的小数的位数");
    jLabel2.setBounds(new Rectangle(30, 76, 172, 31));
    numField.setHorizontalAlignment(SwingConstants.RIGHT);
    numField.setBounds(new Rectangle(230, 34, 139, 28));
    lengthField.setText("8");
    lengthField.setHorizontalAlignment(SwingConstants.RIGHT);
    lengthField.setBounds(new Rectangle(230, 79, 139, 28));
    jLabel3.setText("结果:");
    jLabel3.setBounds(new Rectangle(30, 137, 46, 31));
    jButton1.setBounds(new Rectangle(149, 230, 99, 25));
    jButton1.setText("计算");
    jButton1.addActionListener(new actionAdapter());
    jScrollPane1.setBounds(new Rectangle(86, 136, 283, 74));
    contentPane.add(numField);
    contentPane.add(jLabel1, null);
    contentPane.add(lengthField);
    contentPane.add(jButton1);
    contentPane.add(jScrollPane1);
    contentPane.add(jLabel3);
    contentPane.add(jLabel2);
    outPutArea.setLineWrap(true);
    jScrollPane1.getViewport().add(outPutArea);
  }
 
  //计算按钮的监[屏蔽]和事件方法
  class actionAdapter implements ActionListener {
    public void actionPerformed(ActionEvent e) {
        try{
          Double num = new Double(numField.getText());
          int length = new Integer(lengthField.getText());
          Integer intNum = new Integer(num.intValue());
          String intBinNum = intNum.toBinaryString(num.intValue());
          String strOutput = new String();
         
          double a = num - (double)intNum;
          double b = 0;          
          int binNum[] = new int[length];
          for (int i = 0; i < length; i++) {
            b = a * 2;
            if (b > (double) 1) {
                binNum[i] = (int) 1;
                a = b - (double) 1;
            } else if (b < (double) 1) {
                binNum[i] = (int) 0;
                a = b;
            } else if (b == (double) 1) {
                binNum[i] = (int) 1;
                break;
            }
          }            
          for (int j = 0; j < length; j++) {
            strOutput = strOutput + binNum[j];
          }
          if (strOutput.length()==0){
            outPutArea.setText(intBinNum);
          }else{
            outPutArea.setText(intBinNum + "." + strOutput);
          }
        }catch(NumberFormatException ee){
          message.showMessageDialog(frame,"数据格式错误");
        }
    }
  }
 
  //main 方法
  public static void main(String[] args) {
    Converse conv = new Converse();
    conv.centerWindow();
    conv.frame.setVisible(true);
  }
}

本帖最近评分记录:
  • 浮云:5 (by 独飞の孤心) | 理由: 不错哈
  • 顶端 Posted: 2006-09-18 12:28 | [楼 主]
    るーこ



    性别: 帅哥 状态: 该用户目前不在线
    等级: 品行端正
    发贴: 360
    威望: 0
    浮云: 1120
    在线等级:
    注册时间: 2006-09-15
    最后登陆: 2008-05-07

    5come5帮你背单词 [ career /kə'riə/ n. 职业,生涯 ]


    每4个空一下就对了
    顶端 Posted: 2006-09-18 12:34 | [1 楼]
    我来我网·5come5 Forum » 程序员之家

    Total 0.024115(s) query 8, Time now is:05-21 19:45, Gzip enabled
    Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号