java 进制转换工具_JAVA 简单进制转换器

乱搞的..

JAVA作业写了个进制转换器...写出来的东西还蛮怪的

d025aa9d0a7d8540a668e9084532a973.png

/*

* Author:graykido

* Coding:GBK

* */

package Caculater;

import javafx.scene.layout.Background;

import javafx.scene.layout.BackgroundImage;

import javax.rmi.ssl.SslRMIClientSocketFactory;

import javax.swing.*;

import javax.swing.border.Border;

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

public class caculater extends JFrame {

ImageIcon icon;

JLabel label;

//输入文本框

JTextField text;

//数字按钮

JPanel numPanl;

JButton numButton[];

//输入和输出进制的框

JPanel buttonPanel;

//输出进制单选框

JLabel outbuttonlabel;

JPanel outbuttonPanel;

ButtonGroup obtg;

//输入进制单选框

JLabel inbuttonlabel;

JPanel inbuttonPanel;

ButtonGroup ibtg;

//将文本框和进制框放在一个jpanel内

JPanel thPanel;

//当前输入进制

int IHex;

caculater(String title) {

super(title);

//默认输入是十进制

this.IHex = 10;

Container ctpn = getContentPane();

//设置布局

GridLayout layout = new GridLayout(2, 2);

this.setLayout(layout);

//设置文本框

text = new JTextField();

text.setBorder(BorderFactory.createRaisedBevelBorder());

text.setFont(new Font("宋体", Font.BOLD, 25));

//设置标题图标

this.icon = new ImageIcon("src\\Caculater\\go.png");

icon.setDescription("gogogo");

Image img = this.icon.getImage();

this.setIconImage(img);

this.setLocation(100, 200);

this.setSize(1000, 600);

//设置菜单

JMenuBar jmb = new JMenuBar();

JMenu edit = new JMenu("编辑");

JMenuItem edit1 = new JMenuItem("施工中");

edit.add(edit1);

jmb.add(edit);

JMenu view = new JMenu("查看");

JMenuItem view1 = new JMenuItem("施工中");

view.add(view1);

jmb.add(view);

JMenu help = new JMenu("帮助");

JMenuItem help1 = new JMenuItem("施工中");

help.add(help1);

jmb.add(help);

this.setJMenuBar(jmb);

//图标

ImageIcon icon1 = new ImageIcon("src/Caculater/left.gif");

ImageIcon icon2 = new ImageIcon("src/Caculater/right.gif");

buttonPanel = new JPanel();

//输出进制单选框

outbuttonPanel = new JPanel();

obtg = new ButtonGroup();

JLabel outL = new JLabel("输出进制", icon1, JLabel.CENTER);

outbuttonPanel.add(outL);

outaddRadioButton("二进制", 2);

outaddRadioButton("八进制", 8);

outaddRadioButton("十进制", 10);

outaddRadioButton("十六进制", 16);

//输入进制单选框

inbuttonPanel = new JPanel();

ibtg = new ButtonGroup();

JLabel inL = new JLabel("输入进制", icon2, JLabel.CENTER);

inbuttonPanel.add(inL);

inaddRadioButton("二进制", 2);

inaddRadioButton("八进制", 8);

inaddRadioButton("十进制", 10);

//数字按钮

this.numPanl = new JPanel();

this.numButton = new JButton[20];

for (int i = 0; i < 10; i++) {

numButton[i] = addJButton(i);

numPanl.add(numButton[i]);

}

//清空文本框按钮

JButton clr = new JButton("clr");

clr.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent actionEvent) {

text.setText("");

}

}); //对于数字按钮以及清空按钮排版

numPanl.add(clr);

numPanl.setLayout(new GridLayout(4, 4));

buttonPanel.setLayout(new GridLayout(2, 1));

buttonPanel.add(outbuttonPanel);

buttonPanel.add(inbuttonPanel);

thPanel = new JPanel(new GridLayout(1, 2));

thPanel.add(text);

thPanel.add(buttonPanel);

// ctpn.add(text);

ctpn.add(thPanel);

// ctpn.add(outbuttonPanel);

// ctpn.add(inbuttonPanel);

ctpn.add(numPanl);

//关闭进程

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setVisible(true);

}

public JButton addJButton(int num) {

JButton button = new JButton("" + num);

button.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent event) {

try {

Integer.parseInt(text.getText());

} catch (Exception e) {

text.setText("");

}

text.setText(text.getText() + num);

validate();

}

});

return button;

}

public void outaddRadioButton(String title, int Hex) {

JRadioButton button = new JRadioButton(title);

button.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent event) {

//触发进制转换

try {

long num = Long.parseLong(text.getText());

//先将框内内容转为十进制

long temp = num;

long mut = 1;

long res = 0;

if (IHex != 10) {

while (temp != 0) {

res += (temp % 10 * mut);

mut *= IHex;

temp /= 10;

}

} else {

res = num;

}

num = res;

String ans = "";

while (num != 0) {

// ans += String.valueOf(num % Hex < 10 ? num % Hex : num % Hex - 10 + 'A');

ans += (char) (num % Hex < 10 ? num % Hex + '0' : num % Hex - 10 + 'A');

num /= Hex;

}

text.setText(new StringBuffer(ans).reverse().toString());

} catch (NumberFormatException e) {

text.setText("请输入数字或检查输入数字范围是否过大");

} catch (Exception e) {

text.setText("" + e);

}

}

});

obtg.add(button);

outbuttonPanel.add(button);

}

public void inaddRadioButton(String title, int Hex) {

JRadioButton button = new JRadioButton(title);

button.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent actionEvent) {

IHex = Hex;

for (int i = 0; i < 10; i++) {

numButton[i].setEnabled(true);

}

for (int i = Hex; i < 10; i++) {

numButton[i].setEnabled(false);

}

}

});

inbuttonPanel.add(button);

ibtg.add(button);

}

public static void main(String[] args) {

caculater fr = new caculater("计算器");

}

}

一个小小的update

e806f723f11d7fd8040688729a097149.png

结果因为把IDEA突然弄崩了鼓捣了一晚上导致心态炸裂

/*

* Author:graykido

* Coding:GBK

* */

package Caculater;

import javafx.scene.layout.Background;

import javafx.scene.layout.BackgroundImage;

import javax.rmi.ssl.SslRMIClientSocketFactory;

import javax.swing.*;

import javax.swing.border.Border;

import javax.swing.plaf.synth.SynthEditorPaneUI;

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

public class caculater extends JFrame {

ImageIcon icon;

JLabel label;

//输入文本框

JTextField text;

//数字按钮

JPanel numPanl;

JButton numButton[];

//进制和數字框

JPanel buttonPanel;

//进制

JLabel inbuttonlabel;

JPanel inbuttonPanel;

ButtonGroup ibtg;

//当前进制

int IHex;

caculater(String title) {

super(title);

//默认输入是十进制

this.IHex = 10;

Container ctpn = getContentPane();

//设置布局

this.setLayout(new BorderLayout());

//设置文本框

text = new JTextField();

text.setBorder(BorderFactory.createRaisedBevelBorder());

text.setFont(new Font("宋体", Font.BOLD, 25));

ctpn.add("North", text);

//设置标题图标

this.icon = new ImageIcon("src\\Caculater\\go.png");

icon.setDescription("gogogo");

Image img = this.icon.getImage();

this.setIconImage(img);

this.setLocation(100, 200);

this.setSize(400, 500);

//设置菜单

JMenuBar jmb = new JMenuBar();

JMenu edit = new JMenu("编辑");

JMenuItem edit1 = new JMenuItem("施工中");

edit.add(edit1);

jmb.add(edit);

JMenu view = new JMenu("查看");

JMenuItem view1 = new JMenuItem("施工中");

view.add(view1);

jmb.add(view);

JMenu help = new JMenu("帮助");

JMenuItem help1 = new JMenuItem("About Me");

help1.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent actionEvent) {

JOptionPane.showMessageDialog(null, "graykido");

}

});

help.add(help1);

jmb.add(help);

this.setJMenuBar(jmb);

//图标

ImageIcon icon1 = new ImageIcon("src/Caculater/left.gif");

ImageIcon icon2 = new ImageIcon("src/Caculater/right.gif");

buttonPanel = new JPanel(new BorderLayout());

//进制单选框

inbuttonPanel = new JPanel();

ibtg = new ButtonGroup();

JLabel inL = new JLabel("进制", icon2, JLabel.CENTER);

inbuttonPanel.add(inL);

inaddRadioButton("二进制", 2);

inaddRadioButton("八进制", 8);

inaddRadioButton("十进制", 10);

inaddRadioButton("十六进制", 16);

buttonPanel.add("North", inbuttonPanel);

//输入进制单选框

this.numPanl = new JPanel(new GridLayout(5, 5));

this.numButton = new JButton[20];

for (int i = 0; i < 16; i++) {

numButton[i] = addJButton(i);

numPanl.add(numButton[i]);

}

//清空文本框按钮

JButton clr = new JButton("clr");

clr.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent actionEvent) {

text.setText("");

}

});

JButton numadd = new JButton("+");

numadd.setEnabled(false);

JButton numsub = new JButton("-");

numsub.setEnabled(false);

JButton nummul = new JButton("*");

nummul.setEnabled(false);

JButton numdiv = new JButton("/");

numdiv.setEnabled(false);

JButton numeql = new JButton("=");

numeql.setEnabled(false);

numPanl.add(clr);

numPanl.add(numdiv);

numPanl.add(nummul);

numPanl.add(numsub);

numPanl.add(numadd);

numPanl.add(numeql);

buttonPanel.setPreferredSize(new Dimension(200, 200));

buttonPanel.add("Center", this.numPanl);

ctpn.add("Center", buttonPanel);

//关闭进程

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setVisible(true);

}

public JButton addJButton(int num) {

JButton button;

if (num >= 10) {

button = new JButton("" + (char) ((byte) 'A' + num - 10));

} else {

button = new JButton("" + num);

}

button.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent event) {

text.setText(text.getText() + button.getText());

validate();

}

});

return button;

}

public void inaddRadioButton(String title, int Hex) {

JRadioButton button = new JRadioButton(title);

button.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent actionEvent) {

try {

String Txt = text.getText();

long temp = 0;

long mut = 1;

long res = 0;

for (int i = Txt.length() - 1; i >= 0; i--) {

if (Character.isUpperCase(Txt.charAt(i))) {

temp += ((byte) Txt.charAt(i) - (byte) 'A' + 10) * mut;

} else {

temp += ((byte) (Txt.charAt(i)) - (byte) ('0')) * mut;

}

mut *= IHex;

}

res = temp;

String ans = "";

while (res != 0) {

// ans += String.valueOf(res % Hex < 10 ? res % Hex : res % Hex - 10 + 'A');

ans += (char) (res % Hex < 10 ? res % Hex + '0' : res % Hex - 10 + 'A');

res /= Hex;

}

text.setText(new StringBuffer(ans).reverse().toString());

IHex = Hex;

for (int i = 0; i < 16; i++) {

numButton[i].setEnabled(true);

}

for (int i = Hex; i < 16; i++) {

numButton[i].setEnabled(false);

}

} catch (NumberFormatException e) {

text.setText("请输入数字或检查输入数字范围是否过大");

} catch (Exception e) {

text.setText("" + e);

}

}

});

inbuttonPanel.add(button);

ibtg.add(button);

}

public static void main(String[] args) {

caculater fr = new caculater("计算器");

}

}

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值