分享

java学习——97.进制间的转换

 pythonjava学习 2021-04-06

这两个星期被各种杂事充斥了生活,不过,生活,本来就是充满了波折,波折也是一种成长,希望我能继续成长下去。

今天要写的是进制间的转换。

其实这是一个很简单的题目,现在大学里就算是非计算机专业,也会有一门计算机的公共课,入门必讲,计算机是由二进制组成,除了二进制之外,还有八进制、十六进制来辅助,而我们人类呢,用的是十进制。

有确定的方法来进行各种进制之间的转换,那么如何用Java来实现,今天介绍的是其他进制转换成十进制整数。

题目:从键盘输入一串字符串,将其转换为对应的整数输出。

其完整代码如下:

其具体的含义请详见注释。

import java.util.*;

public class Stringlearn {

     public static int parseInt(String s) throws NumberFormatException

        {

            char ch=s.charAt(0); //获得字符串的首字符,识别进制。

            int value=0, i=0, sign=1,radix=10; //value为十进制的值,i为字符串的序号,sign为符号,radix表示几进制,默认为十进制

            if (ch>='1' && ch<='9' || ch=='+' || ch=='-'||(ch=='0'&&s.length==1)) //判断是否十进制,十进制的判断条件是当第一位为1~9之间的数字,或者第一位为符号为表示正数或负数,或者就是单纯的数字0

            {  

                if (ch=='+' || ch=='-')                       

                    i++;                                     

                sign = ch=='-' ? -1 : 1;      //此三元运算符用来确定符号位                 

            }

            else if (ch=='0' &&s.charAt(1)!='x') //判断是否为八进制,八进制以0开头

                 {   radix=8;

                     i++;

                 }

                 else if (ch=='0' &&s.charAt(1)=='x') //判断是澡为十六进制,以0x开头

                      {   radix=16;

                          i+=2;

                      }

                        else throw new NumberFormatException("整数不能识别\'"+ch+"\'字符");

            System.out.println("您输入的:"+s+""+radix+"进制数"); //输出判断的结果到底为几进制

            while (i<s.length())//循环计算其对应的整数值

               ch=s.charAt(i++);

                if (ch>='0' && ch-'0'<radix)                

                    value =value*radix+ch-'0'; //value记住当前获得的整数值

                elseif (radix==16 &&ch>='a' && ch<='f')

                    value =value*radix+ch-'a'+10; //十六进制还需要转换'a''f'表示的整数值

                elseif (radix==16 &&ch>='A' && ch<='F')

                    value =value*radix+ch-'A'+10;

                elsethrownewNumberFormatException(radix+"进制整数不能识别'"+ch+"\'字符");

            }

            return value*sign;  //返回有符号整数值

        }  

    public static void main(String args[]){

       while(true){

           System.out.print("请输入数据:");

           Scanner scan=new Scanner(System.in);

           String s=scan.nextLine();

           int n=parseInt(s);

           System.out.println("转换为十进制数为:"+n);

       }

    }  

}

 其运行结果如下:

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多