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

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

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

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

有确定的方法来进行各种进制之间的转换,那么如何用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)

相关推荐

  • VBA如何进行数制转换,十六进制转换、八进制转换不再是难事

    No.1 数制转换在计算机编程中应用很普遍,而且也是比较难的一个操作. 在学习二进制和八进制或十六进制之前,我们通常普遍学习的是十进制计算. 这也是一个让你迷惑的事情,很多时候可能有些人并不清楚,什么 ...

  • java学习——99.进制间的转换

    计算机中的计算机器是可以直接实现进制间转换的功能的. 也可以自己写用户界面来实现各种进制之间的转换. 本篇即采用用户界面来实现进制的转换,代码有点长,感兴趣的朋友看看,主要是结合了前两篇的转换,再加上 ...

  • 常用各种进制之间的转换

    原创大军电工2021-05-16 09:21:10 在电学中经常会遇到数字间的进制转换,比如plc就必须了解相关知识点.很多人对这一块一直都是很模糊,或者说时间一长呢,总有点忘.今天我整理了一下,常用 ...

  • java学习——98.十进制转换为其它进制

    本篇介绍如何将十进制转换为二进制.八进制或十六进制. 十进制转换为二进制的方法是"除2取余法",其他进制也可依此类推. 本例是通过main方法输入一个整数,并根据main中的语句将 ...

  • 进制转换及算法!进阶必学!

         首先,祝贺视频课程学员数突破10万!全5分好评!      非常,非常,非常感谢大家的认可和支持!      将继续发放50元视频直购优惠券,文末点"阅读原文"即可领取! ...

  • (7条消息) 进制转换( QString 转换为 Hex ByteArray)

    QString 转换为 Hex ByteArray void SimSerialPort::convertStringToHex(const QString &str, QByteArray ...

  • 4.13 进制转换与符号函数base和sign

    4.13 进制转换与符号函数base和sign

  • 每日一题C++版(进制转换)

    编程是很多偏计算机.人工智能领域必须掌握的一项技能,此编程能力在学习和工作中起着重要的作用.因此小白决定开辟一个新的板块"每日一题",通过每天一道编程题目来强化和锻炼自己的编程能力 ...

  • 【编程练习】进制转换问题

    【编程练习】进制转换问题

  • 5万人冲进直播间,法学老师卡成表情包,淘宝上可以学习了?

    2020年的春天,据说有不少网友都因为同一个男人,彻底掉进了法学的大坑. 明明只是在人群中对他的视频多看了一眼,却一发不可收拾,越看越上头. 这个人,就是新晋流量之王,中国政法大学教授罗翔. 一个月吸 ...