java实现:整数进制相互转换 20
要求:运用数组。设计二进制,四进制,八进制,十六进制显示算法,各进制位数根据整数类型而定;当取值为正数或0且不足位时,高位补0,显示符号位;解决负整数的进制转换问题。 展开
java实现:整数进制相互转换的方法:
十进制转为二进制、八进制、十六进制, 用 Integer.toXXXString()方法
(1)十进制转为二进制: Integer.toBinaryString(int i);
public static String toBinaryString(int i):以二进制(基数 2)无符号整数形式返回一个整数参数的字符串表示形式。
(2)十进制转为8进制 :Integer.toOctalString(int i);
public static String toOctalString(int i):以八进制(基数 8)无符号整数形式返回一个整数参数的字符串表示形式。(3)十进制转为16进制: Integer.toHexString(int i);
public static String toHexString(int i):以十六进制(基数 16)无符号整数形式返回一个整数参数的字符串表示形式。
举例:
String bin = Integer.toBinaryString(10);
String oct = Integer.toOctalString(10);
String hex = Integer.toHexString(10);
2.十六进制、八进制、二进制转为十进制(有两种方法):parseInt() 和valueOf()。
Integer.parseInt(String s,int radix);
public static int parseInt(String s,int radix) throws NumberFormatException{}使用第二个参数作为指定的基数,将字符串参数解析为有符号的整数;
Integer.valueOf(String s,int radix);
public static Integer valueOf(String s, int radix) throws NumberFormatException{}返回一个 Integer 对象,该对象中保存了用第二个参数提供的基数进行解析时从指定的 String 中提取的值。
举例:
try{
int i = Integer.parseInt("a", 16);
//输出为10进制数10
System.out.println(i);
}catch (Exception e){
e.printStackTrace();
}
try{
//十六进制转成十进制
String hex = Integer.valueOf("FFFF",16).toString();
System.out.println(hex);
//八进制转成十进制
String oct = Integer.valueOf("12",8).toString();
System.out.println(oct);
//二进制转十进制
String bin = Integer.valueOf("0101",2).toString();
System.out.println(bin);
}catch (Exception e){
e.printStackTrace();
}
Integer.toBinaryString(int i)
或
Integer.toOctalString(int i)
或
Integer.toHexString(int i)
进行转换;别的进制转换也同样实现
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Convert extends JFrame{
JLabel l1=new JLabel(" 十进制");
JLabel l2=new JLabel(" 二进制");
JLabel l3=new JLabel(" 八进制");
JLabel l4=new JLabel("十六进制");
JTextField t1=new JTextField(25);
JTextField t2=new JTextField(25);
JTextField t3=new JTextField(25);
JTextField t4=new JTextField(25);
JPanel p1=new JPanel();
JPanel p2=new JPanel();
public void init(){
setTitle("整数进制转换");
setLayout(new FlowLayout());
add(p1);add(p2);
p1.setLayout(new GridLayout(4,1,10,10));
p2.setLayout(new GridLayout(4,1,10,10));
p1.add(l1);p2.add(t1);
p1.add(l2);p2.add(t2);
p1.add(l3);p2.add(t3);
p1.add(l4);p2.add(t4);
t1.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e){
int k = e.getKeyCode();
if (k == e.VK_ENTER){
int i=Integer.parseInt(t1.getText());
t2.setText(Integer.toBinaryString(i));
t3.setText(Integer.toOctalString(i));
t4.setText(Integer.toHexString(i));
}
}
});
t2.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e){
int k = e.getKeyCode();
if (k == e.VK_ENTER){
int i=Integer.parseInt(t2.getText(),2);
t1.setText(Integer.toString(i));
t3.setText(Integer.toOctalString(i));
t4.setText(Integer.toHexString(i));
}
}
});
t3.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e){
int k = e.getKeyCode();
if (k == e.VK_ENTER){
int i=Integer.parseInt(t3.getText(),8);
t2.setText(Integer.toBinaryString(i));
t1.setText(Integer.toString(i));
t4.setText(Integer.toHexString(i));
}
}
});
t4.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e){
int k = e.getKeyCode();
if (k == e.VK_ENTER){
int i=Integer.parseInt(t4.getText(),16);
t2.setText(Integer.toBinaryString(i));
t3.setText(Integer.toOctalString(i));
t1.setText(Integer.toString(i));
}
}
});
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLocation(260,200);
pack();
setVisible(true);
}
public static void main(String[] args) throws Exception{
new Convert().init();
}
}
import java.awt.event.*;
import java.awt.*;
public class NewClass1 extends JFrame{
JButton jButton1;
JLabel jLabel1;
JLabel jLabel2;
JLabel jLabel3;
JLabel jLabel4;
JTextField jTextField1;
JTextField jTextField2;
JTextField jTextField3;
JTextField jTextField4;
JButton jButton;
public NewClass1()
{
jButton = new JButton("点我转换");
jLabel1 = new JLabel();
jLabel2 = new JLabel();
jLabel3 = new JLabel();
jLabel4 = new JLabel();
jTextField1 = new JTextField(20);
jTextField2 = new JTextField(20);
jTextField3 = new JTextField(20);
jTextField4 = new JTextField(20);
jLabel1.setText("十进制");
jLabel2.setText("二进制");
jLabel3.setText("八进制");
jLabel4.setText("十六进制");
this.add(jLabel1);
this.add(jTextField1);
this.add(jLabel2);
this.add(jTextField2);
this.add(jLabel3);
this.add(jTextField3);
this.add(jLabel4);
this.add(jTextField4);
jButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int i =Integer.parseInt(jTextField1.getText()) ;
jTextField2.setText(Integer.toBinaryString(i));
jTextField3.setText(Integer.toOctalString(i));
jTextField4.setText(Integer.toHexString(i));
}
});
this.add(jButton);
this.setLayout(new FlowLayout());
this.setBounds(200, 100, 300, 170);
this.setVisible(true);
}
public static void main(String[] args)
{
new NewClass1();
}
}