首页 > 编程知识 正文

java十进制转二进制算法,2进制与10进制的转换器

时间:2023-05-05 22:06:00 阅读:285063 作者:4170

@TOC Java声效计算器(带有十进制转二进制和十六进制的功能)

声明:

这是我们幸福的灰狼布置的一次期末课设,我在课下看了一些关于Java用户图形界面的书,又结合北大教授的讲课的内容,完成了这次课设。我对比较难理解的代码和重要代码已经注释,如果我有哪一部分写的不明白的地方请大家在评论区留言。

设计思路:

首先运用swing.JFrame生成框架,再用swing.JPanel生成三个面板,分别用布局管理器对他们进行管理。添加音效,首先得把音效文件放到确定的路径,再把路径按照我写的代码格式编写就OK了。

计算器实现功能:

实现基本的加、减、乘、除等基本用法,除此之外还添加了十进制转二进制和十六进制的功能。
每次按完图形界面上的按钮就会发出声音

代码部分:

package 计算器;

import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileInputStream;
import java.math.BigInteger;

import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.WindowConstants;

import sun.audio.AudioPlayer;
import sun.audio.AudioStream;
public class Calculator extends JFrame implements ActionListener {
private final String[] str={
“7”, “8”, “9”, “/”,
“4”, “5”, “6”, “*”,
“1”, “2”, “3”, “-”,
“.”, “0”, “=”, “+”
};
JButton[] buttons =new JButton[str.length];
JButton reset =new JButton(“CE”);
JButton t16 =new JButton(“hex”);
JButton t2 =new JButton(“binary”);
JTextField display = new JTextField(">>>Welcome<<<");

public Calculator() {Font font =new Font("Consolas",Font.BOLD,18);//粗体

// add components
JPanel pnlHead = new JPanel(new BorderLayout());
JPanel pnlend = new JPanel(new BorderLayout());
pnlHead.add(display,BorderLayout.CENTER);
pnlHead.add(reset,BorderLayout.EAST);
pnlend.add(t16,BorderLayout.EAST);
pnlend.add(t2,BorderLayout.CENTER);
display.setFont(font);
reset.setFont(font);
t16.setFont(font);
t2.setFont(font);

JPanel pnlBody =new JPanel(new GridLayout(4,4));for(int i=0;i<str.length;i++){buttons[i]=new JButton(str[i]);buttons[i].setFont(font);pnlBody.add(buttons[i]);}getContentPane().setLayout(new BorderLayout());getContentPane().add("North", pnlHead);getContentPane().add("Center", pnlBody);getContentPane().add("South", pnlend);

// set frame properties
for(int i=0;i<str.length;i++)
buttons[i].addActionListener(this);
reset.addActionListener(this);//
display.addActionListener(this);//
t16.addActionListener(this);//
t2.addActionListener(this);

// set frame properties
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setSize(300,300);
setLocation(500, 150);
setVisible(true);
}

@Overridepublic void actionPerformed(ActionEvent arg0) {Object target =arg0.getSource();//定义事件发出的对象String cmd = arg0.getActionCommand();//定义事件所发出的对象的名称if(target==reset){handleReset();playMusic1();}else if(target==t16){ playMusic2();BigInteger src = new BigInteger(display.getText());// display.setText(src.toString(16));}else if(target==t2){playMusic2();BigInteger src = new BigInteger(display.getText());// display.setText(src.toString(2));}else if (" 0123456789.".indexOf(cmd)>0){//遍历当前字符串 ***handleNumber(cmd); playMusic2();}else {handleOperator(cmd); playMusic2(); }// TODO Auto-generated method stub}boolean isFirstDigit = true;//**double number = 0.0;String operator = "=";//public void handleNumber(String key){if(isFirstDigit)display.setText(key);else if(!key.equals(".")) display.setText(display.getText()+key);else if(display.getText().indexOf(".")<0)display.setText(display.getText()+".");isFirstDigit =false;}//**public void handleReset(){display.setText("Thanks for using it.");isFirstDigit =true;operator ="=";}public void handleOperator(String cmd){double dDisplay =Double.valueOf(display.getText());//每次都会附给它!!!**switch(operator){ case"+":number+=dDisplay;break; case"-":number-=dDisplay;break; case"*":number*=dDisplay;break; case"/":number/=dDisplay;break; case"=":number=dDisplay;break;}display.setText(String.valueOf(number));operator =cmd;isFirstDigit = true;}//***public void playMusic1(){ String path1="D:\96\Ce.wav" ;//必须得把路径设置为字符型!!!! try { FileInputStream fileau=new FileInputStream(path1); AudioStream as=new AudioStream(fileau); AudioPlayer.player.start(as); } catch (Exception e) { e.printStackTrace(); }}public void playMusic2(){ String path2="D:\96\Aj.wav" ;//必须得把路径设置为字符型!!!! try { FileInputStream fileau=new FileInputStream(path2); AudioStream as=new AudioStream(fileau); AudioPlayer.player.start(as); } catch (Exception e) { e.printStackTrace(); }}public static void main(String[] args) {// TODO Auto-generated method stub new Calculator();}

}

运行结果:


版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。