java实现:整数进制相互转换

指定一种整数类型(byte,short,char,int),以一种进制(十进制,二进制,八进制,十六进制)形式输入一个整数,分别显示其其他进制形式,图形用户界面如图所示。
要求:运用数组。设计二进制,四进制,八进制,十六进制显示算法,各进制位数根据整数类型而定;当取值为正数或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();
        }

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-09
如输入10进制,别的进制用
Integer.toBinaryString(int i)

Integer.toOctalString(int i)

Integer.toHexString(int i)
进行转换;别的进制转换也同样实现本回答被网友采纳
第2个回答  2012-12-10
输入后按回车就可以转换。
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();
}
}
第3个回答  2012-12-09
import javax.swing.*;
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();
}

}
第4个回答  2012-12-09
不会啊