`
youngmaster
  • 浏览: 58294 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Java实现:类windows平台下简易数制转换源代码

阅读更多
package com.youngmaster;

import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.text.DecimalFormat;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.UIManager;

public class NumberSystemConversion extends JFrame implements ActionListener, ItemListener {
	private JButton jButton[];

	private JButton clear, converJButton;

	private JTextField jTextField;

	private JPanel jPanel1, jPanel2, jPanel3;

	int number = 1;

	private String string[] = { "7", "8", "9", "/", "6", "5", "4", "*", "3",
			"2", "1", "-", "0", ".", "=", "+" };

	private String s = "", num1 = "", num2 = "", num3 = "";

	private static int tem = 0;

	JComboBox jComboBox;

	private boolean flag = true;

	public NumberSystemConversion() {
		super("简易计算器");
		Container c = getContentPane();
		c.setLayout(new FlowLayout());
		jPanel1 = new JPanel();
		jTextField = new JTextField(13);
		jPanel1.add(jTextField);
		clear = new JButton("C");
		jPanel1.add(clear);
		c.add(jPanel1);
		jPanel3 = new JPanel();
		jComboBox = new JComboBox();
		jComboBox.jComboBoxddItem("10--2");
		jComboBox.addItem("10--8");
		jComboBox.addItem("10--16");
		jComboBox.addItem("2 --8");
		jComboBox.addItem("2 --10");
		jComboBox.addItem("2 --16");
		jComboBox.addItem("8 --2");
		jComboBox.addItem("8 --10");
		jComboBox.addItem("8 --16");
		jComboBox.addItem("16--2");
		jComboBox.addItem("16--8");
		jComboBox.addItem("16--10");
		jPanel3.add(jComboBox);
		converJButton = new JButton("转换");
		jPanel3.add(converJButton);
		c.add(jPanel3);
		jPanel2 = new JPanel();
		jPanel2.setLayout(new GridLayout(4, 4, 10, 10));
		jButton = new JButton[string.length];
		for (int i = 0; i < string.length; i++) {
			jButton[i] = new JButton(string[i]);
			jButton[i].addActionListener(this);
			jPanel2.add(jButton[i]);
		}
		c.add(jPanel2);
		clear.addActionListener(this);
		converJButton.addActionListener(this);
		jComboBox.addItemListener(this);
		setSize(200, 250);
		setVisible(true);
		try {
			JMenuItem itemNative=new JMenuItem("系统平台风格");
			UIManager.setLoojTextFieldAndFeel(UIManager.getSystemLookAndFeelClassName()); // 设置界面样式
		} catch (Exception e) {
			e.printStackTrace();
		}
		setSize(220, 270);
		setVisible(true);
	}

	public static void main(String[] args) {
		NumberSystemConversion s = new NumberSystemConversion();
		s.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}

	public void itemStateChanged(ItemEvent event) {
		if (event.getStateChange() == ItemEvent.SELECTED) {
			if (jComboBox.getSelectedItem().equals("10--2"))
				number = 1;
			if (jComboBox.getSelectedItem().equals("10--8"))
				number = 2;
			if (jComboBox.getSelectedItem().equals("10--16"))
				number = 3;
			if (jComboBox.getSelectedItem().equals("2 --8"))
				number = 4;
			if (jComboBox.getSelectedItem().equals("2 --10"))
				number = 5;
			if (jComboBox.getSelectedItem().equals("2 --16"))
				number = 6;
			if (jComboBox.getSelectedItem().equals("8 --2"))
				number = 7;
			if (jComboBox.getSelectedItem().equals("8 --10"))
				number = 8;
			if (jComboBox.getSelectedItem().equals("8 --16"))
				number = 9;
			if (jComboBox.getSelectedItem().equals("16--2"))
				number = 10;
			if (jComboBox.getSelectedItem().equals("16--8"))
				number = 11;
			if (jComboBox.getSelectedItem().equals("16--10"))
				number = 12;
		}
	}

	public void actionPerformed(ActionEvent e) {
		if (!(e.getSource() == jButton[3] || e.getSource() == jButton[7]
				|| e.getSource() == jButton[11] || e.getSource() == jButton[13]
				|| e.getSource() == jButton[14] || e.getSource() == jButton[15] || e
				.getSource() == clear|| e.getSource() == converJButton)) {
			if (e.getSource() == jButton[12]) {
				s += e.getActionCommand();
				char a = s.charAt(0);
				if (a == '0') {
					s = "0.";
					jTextField.setText(s);
				}
				else{
					jTextField.setText(s);
					flag = true;
				}
				
				}
			   else {
				s += e.getActionCommand();
				jTextField.setText(s);
				flag = true;
			}
		} else {
			if (e.getSource() == converJButton) {
				if (jTextField.getText().equals(""))
					;
				else
				{
					jinconverJButtoni();
					tem = 0;
					num1 = "";
					s = "";
				}
			}
			if (e.getSource() == clear) {
				jTextField.setText("");
				tem = 0;
				num1 = "";
				s = "";
			}
			if (e.getSource() == jButton[13]) {
				String ss = s;
				ss += e.getActionCommand();
				char a = ss.charAt(0);
				if (a == '.') {
					s = "";
				} else {
					if (ss.matches("[0-9].")) {
						s += e.getActionCommand();
						jTextField.setText(s);
					}
				}

			}
			if (flag) {
				flag = false;
				if (e.getSource() == jButton[3]) {
					if (jTextField.getText().equals(""))
						;
					else {

						if (num1.equals("")) {
							num1 = jTextField.getText();
							jTextField.setText("/");
							s = "";
							tem = 3;
						} else {
							num2 = jTextField.getText();
							count(tem, num1, num2);
							tem = 3;
						}
					}
				}
				if (e.getSource() == jButton[7]) {
					if (jTextField.getText().equals(""))
						;
					else {
						if (num1.equals("")) {
							num1 = jTextField.getText();
							jTextField.setText("*");
							s = "";
							tem = 7;
						} else {
							num2 = jTextField.getText();
							count(tem, num1, num2);
							tem = 7;
						}
					}
				}
				if (e.getSource() == jButton[11]) {
					if (jTextField.getText().equals(""))
						;
					else {
						if (num1.equals("")) {
							num1 = jTextField.getText();
							jTextField.setText("-");
							s = "";
							tem = 11;
						} else {
							num2 = jTextField.getText();
							count(tem, num1, num2);
							tem = 11;
						}
					}
				}
				if (e.getSource() == jButton[15]) {
					if (jTextField.getText().equals(""))
						;
					else {
						if (num1.equals("")) {
							num1 = jTextField.getText();
							jTextField.setText("+");
							s = "";
							tem = 15;
						} else {
							num2 = jTextField.getText();
							count(tem, num1, num2);
							tem = 15;
						}
					}
				}
				if (e.getSource() == jButton[14]) {
					if (jTextField.getText().equals("") || num1.equals(""))
						flag = true;
					else {
						num2 = jTextField.getText();
						count(tem, num1, num2);
					}
				}
			}
		}
	}

	public void count(int fj, String s1, String s2) {
		DecimalFormat twoDigits = new DecimalFormat("0.00");
		double a, b;
		a = Double.parseDouble(s1);
		b = Double.parseDouble(s2);
		switch (fj) {
		case 3:
			num3 = twoDigits.format((double) (a / b));
			jTextField.setText(num3);
			breajTextField;
		case 7:
			num3 = twoDigits.format((double) (a * b));
			jTextField.setText(num3);
			break;
		case 11:
			num3 = twoDigits.format((double) (a - b));
			jTextField.setText(num3);
			break;
		case 15:
			num3 = twoDigits.format((double) (a + b));
			jTextField.setText(num3);
			break;
		}
		s = "";
		num1 = num3;
		num2 = "";
	}

	public void jinconverJButtoni() {
		if (number == 1)
			jTextField.setText(Integer.toBinaryString(Integer.parseInt(jTextField.getText())));
		else if (number == 2)
			jTextField.setText(Integer.toOctalString(Integer.parseInt(jTextField.getText())));
		else if (number == 3)
			jTextField.setText(Integer.toHexString(Integer.parseInt(jTextField.getText())));
		else if (number == 4) {
			int a = j1(jTextField.getText(), "[0-1]+", 2);
			jTextField.setText(Integer.toOctalString(a));
		} else if (number == 5) {
			j1(jTextField.getText(), "[0-1]+", 2);

		} else if (number == 6) {
			int a = j1(jTextField.getText(), "[0-1]+", 2);
			jTextField.setText(Integer.toHexString(a));
		} else if (number == 7) {
			int a = j1(jTextField.getText(), "[0-7]+", 8);
			jTextField.setText(Integer.toBinaryString(a));
		} else if (number == 8) {
			j1(jTextField.getText(), "[0-7]+", 8);
		} else if (number == 9) {
			int a = j1(jTextField.getText(), "[0-7]+", 8);
			jTextField.setText(Integer.toHexString(a));
		} else if (number == 10) {
			int a = j2();
			jTextField.setText(Integer.toBinaryString(a));
		} else if (number == 11) {
			int a = j2();
			jTextField.setText(Integer.toOctalString(a));
		} else if (number == 12) {
			j2();
		}
	}

	public int j1(String converJButtonuanhuan, String a1, int a3) {
		if (converJButtonuanhuan.matches(a1)) {
			int number3, number1 = 0, number2 = 1;
			String s = converJButtonuanhuan;
			StringBuffer ss = new StringBuffer(s);

			ss.reverse();
			for (int i = 0; i < ss.length(); i++) {
				String jj = ss.charAt(i) + "";
				number3 = Integer.parseInt(jj);
				if (i == 0)
					number1 += number3 * number2;
				else
					number1 += number3 * (number2 *= a3);
			}
			jTextField.setText(number1 + "");
			return number1;
		}
		return 0;
	}

	public int j2() {
		if (jTextField.getText().matches("[0-9,a,b,c,d,e,f]+")) {
			int intNum1, intNum2 = 0, intNum3 = 1;
			String s = jTextField.getText();
			StringBuffer stringBuffer = new StringBuffer(s);
			stringBuffer.reverse();
			for (int i = 0; i < stringBuffer.length(); i++) {
				String ptr = stringBuffer.charAt(i) + "";
				System.out.println(ptr);
				if (ptr.equals("a"))
					ptr = "10";
				if (ptr.equals("b"))
					ptr = "11";
				if (ptr.equals("c"))
					ptr = "12";
				if (ptr.equals("d"))
					ptr = "13";
				if (ptr.equals("e"))
					ptr = "14";
				if (ptr.equals("f"))
					ptr = "15";
				System.out.println(ptr);
				intNum1 = Integer.parseInt(ptr);
				if (i == 0)
					intNum2 += intNum1 * intNum3;
				else
					intNum2 += intNum1 * (intNum3 *= 16);
			}
			jTextField.setText(intNum2 + "");
			return intNum2;
		}
		return 0;
	}

}

 

0
0
分享到:
评论

相关推荐

    java编写的数制转换器

    本项目"java编写的数制转换器"专注于实现二进制到十六进制之间的转换,这对于理解和处理计算机内部数据表示至关重要。 在计算机科学中,数据通常以不同数制(如二进制、八进制、十进制和十六进制)的形式存储和处理...

    用java写的数制转换计算器

    通过阅读和学习这个源代码,初学者可以进一步了解Java的编程实践,特别是关于数制转换、异常处理和基本的用户交互设计。 总的来说,编写一个数制转换计算器是学习和巩固Java基础知识的好项目。它涵盖了数据类型转换...

    数据结构-数制转换(C,含文档和代码)

    - **数据结构数制转换.doc**:可能是一份详细的文档,解释了数制转换的理论和代码实现过程。 - **附录.docx**:可能包含了额外的信息,如转换算法的扩展讨论或代码的附加注释。 通过学习这个主题,你可以增强对...

    C++实现的数制转换

    5. **C++代码实现** - 对于一个名为`1.cpp`的文件,它可能包含了C++实现数制转换的代码示例。代码可能包括函数,如`dec_to_bin(int dec)`,`bin_to_dec(std::string bin)`等,这些函数分别用于实现上述的转换过程。...

    简单的VB数制转换,源代码提供下载.rar

    本文将深入探讨如何使用VB进行数制转换,以实现十进制、二进制、八进制和十六进制之间的转换。我们将以标题中的"简单的VB数制转换"为例,结合描述中的"将十进制和R进制转换成16进制数",讲解相关知识点。 首先,VB...

    用Java编写的数制转换

    以下是一些基本的Java代码示例,演示了如何进行数制转换: ```java public class NumberSystemConverter { public static void main(String[] args) { // 十进制转二进制 String binary = Integer....

    c++编写的数制转换

    这些数制在不同的场景下各有用处,例如二进制是计算机内部数据存储和处理的基础,八进制和十六进制则常用于代码编写和内存表示。 C++中进行数制转换主要有以下几种方法: 1. **整数的数制转换**: - `std::string...

    java中数制转换问题

    - `Node.java`, `LinkedStack.java`, `NumberConvert.java`, `SStack.java`:这些是对应的源代码文件,可以查看具体的实现细节。 在`实验五.doc`文档中,可能详细介绍了这个数制转换问题的背景、步骤和相关算法分析...

    C++代码实例:数制转换

    根据给定的文件信息,本篇文章将详细解析两个主要的功能:一是如何将十进制整数转换为二进制整数;二是如何将二进制整数转换为十进制整数。此外,还会介绍主程序如何调用这两个功能。 ### 一、十进制整数转换为二...

    数制转换C程序

    根据给定的代码和描述,我们可以深入探讨关于数制转换的知识点,特别是在C语言编程环境中的实现方式。数制转换是计算机科学中的一个基本概念,它涉及到不同进制数字系统之间的相互转换,如二进制、八进制、十进制和...

    数据结构 数制转换实验报告

    以下是部分代码实现: ```c // 初始化栈 int InitStack(SqStack &S) { S.base = (int*)malloc(STACK_INIT_SIZE * sizeof(int)); if (!S.base) exit(0); S.top = S.base; S.stacksize = STACK_INIT_SIZE; ...

    栈的链表实现(数制转换问题)

    在本文中,我们将深入探讨如何使用链表来实现栈,并结合数制转换问题——将十进制数转换为八进制数,来进一步理解栈的应用。 首先,让我们了解栈的链表实现。与数组实现相比,链表实现栈具有动态扩展和收缩的优点,...

    链栈实现数制转换、队列编写算法

    1.请使用链栈实现通用数制转换程序:将任意一个十进制数转换成p进制的数。(p分别取2,8,16) 2. 假定一个单向循环链表来表示队列(即循环链队),该队列只设一个队尾指针rear,不设队首指针,试编写下列各种运算...

    数据结构作业之数制转换

    数据结构作业之数制转换 数据结构是一门重要的计算机科学课程,它...该程序的实现方法和原理可以帮助学生和从业人员更好地理解数制转换的概念,并且可以作为一个参考实现来帮助学生和从业人员理解数制转换的实现方法。

    《数制转换问题》的数据结构课程设计

    源程序文件可能包含C++、Java、Python或其他编程语言的实现,每种语言都有其特定的语法和方法来执行这些转换。例如,在Python中,你可以直接使用内置函数`bin()`, `oct()`, `hex()` 和 `int()` 进行转换,而在C++中...

    用c语言中栈实现数制转换

    通过以上步骤和代码实现,我们可以看到,利用栈的数据结构特性,能够高效且直观地实现数制转换的任务,特别是在从高基数(如十进制)转换到低基数(如八进制或二进制)的情况下,栈的“后进先出”特性确保了转换后的...

    数制转换(c语言实现)

    三、代码实现 在C语言中,你可以创建一个函数,输入为任意进制的数字字符串,输出为目标进制的数字字符串。首先,对输入字符串进行有效性检查,确认它是正确的进制表示。然后,根据需要转换的目标进制,选择合适的...

    数据结构 严蔚敏 C语言版 数制转换

    在学习数据结构时,理解这些基本的数制转换对于后续学习数组、链表、树、图等各种数据结构以及它们的算法实现至关重要。严蔚敏教授的教材中,通过实例和练习帮助读者深入理解这些概念,并提供了C语言的实现代码,...

    JAVA编写的数制转换程序(利用包装类)

    利用JAVA的包装类编写的一个很简单的数制转换程序。用到了Interger和Float包装类。

    利用栈实现数制转换

    在计算机科学中,数制转换是一项基础且重要的概念,它涉及到不同数值系统之间的相互转化。本文将详细探讨如何利用栈这种数据结构来实现二进制、八进制和十六进制之间的转换。栈是一种具有“后进先出”(LIFO)特性的...

Global site tag (gtag.js) - Google Analytics