“中关村黑马程序员训练营”练习题(二)
来源:互联网 发布:黑客挂机赚钱软件 编辑:程序博客网 时间:2024/05/22 09:12
/*
* 2. 编写一个程序,它先将键盘上输入的一个字符串转换成十进制整数,然后打印出这个十进制整数对应的二进制形式。
* 这个程序要考虑输入的字符串不能转换成一个十进制整数的情况,并对转换失败的原因要区分出是数字太大,
* 还是其中包含有非数字字符的情况。
* 提示:十进制数转二进制数的方式是用这个数除以2,余数就是二进制数的最低位,接着再用得到的商作为被除数去除以2,
* 这次得到的余数就是次低位,如此循环,直到被除数为0为止。其实,只要明白了打印出一个十进制数的每一位的方式
*(不断除以10,得到的余数就分别是个位,十位,百位),就很容易理解十进制数转二进制数的这种方式。
*/
/*
* 这道题的解题思路事实上题目已经讲了,在此基础上我特化一下我的思路:首先定义一个字符数组,把0到9的十个数字
* 当做字符存储在里面,从命令行读取一行字符串,用charAt()函数把命令行字符串的每一个字符取出来,与十个十进制
* 数进行比较,若与其中的任意一个相等则break退出测试下一个字符,直到字符串的末尾,即args[0].length()长度,
* 这里一定要注意不是args.length,args.length表示args数组的长度。当发现有字符不是数字的话则退出并打印“里面
* 里面有非数字字符”,若整个字符串的每一个字符都是0到1十个数字中的一个的话,接着转换为double类型,并判断是不是
* 超出了int类型整数所能表示的范围,若超出了则打印“数字过大,不能转换为int类型整数”,若每超出的话则把字符串
* 转换为int类型整数,然后进行二进制转换,转换之后打印出来。 这里注意,在二进制转换的时候我用到了BufferedBuild,
* 首先用转换的int整数除以2所得余数用append函数添加到BufferedBuild里面,然后把所得商作为被除数,2继续作为除数
* 求余,余数继续放在BufferedBuild的后面,如此循环,直到被除数为0。循环完之后,调用reverse函数将BufferedBuild
* 里面的字符串进行反转,打印出来,所得结果即为相应的二进制数
*/
package com.itcast.exercise;
public class ReverseToBinary {
public static void main(String[] args) {
char c;
int i,j,num,b;
StringBuilder sb = new StringBuilder();
char[] data = new char[]{'0','1','2','3','4','5','6','7','8','9'};
/*
* 注意:这里是i<args[0].length(),而非i<args.length,我就因为一开始把这里写成了i<args.length
* 结果折腾了半天运行结果就是不对,后来仔细查看才发现这里出了问题,哎,程序员一定要细心啊
* 下面的第一个循环用来检测字符串里面有没有非数字字符
*/
for(i=0;i<args[0].length();i++) {
c = args[0].charAt(i);
for(j=0;j<data.length;j++) {
if(c==data[j]) {
break;
}
}
if(j>=data.length) {
System.out.println(args[0]+"中含有非数字字符");
return;
}
}
double doub = Double.parseDouble(args[0]);//首先转换为double类型,因为double类型表示的范围比较大
if(doub>Integer.MAX_VALUE) {//进行比较看是不是超出了int类型的范围
System.out.println("数字过大,不能装换为int类型整数");
}else{
num = Integer.parseInt(args[0]);
while(num>0) {//求二进制数
b = num%2;
sb.append(b);
num = num/2;
}
System.out.println(sb.reverse());
}
//String s = "121.456";
//System.out.println(s.length());
//因为上面循环我写成了i<args.length,导致运行异常,这里我进行了测试,受到启发发现了原因
}
}
- “中关村黑马程序员训练营”练习题(二)
- “中关村黑马程序员训练营”练习题(二)
- “中关村黑马程序员训练营”练习题(一)
- “中关村黑马程序员训练营”练习题(三)
- “中关村黑马程序员训练营”练习题(一)
- “中关村黑马程序员训练营”练习题(三)
- 中关村“黑马程序员”训练营
- 中关村黑马程序员训练营 ---------- Io流与多线程相结合
- 首届中关村“黑马程序员”训练营正式开班 培养移动紧缺人才
- 今天接到“中关村黑马程序员训练营”的通知。太高兴拉!
- 中关村黑马程序员训练营 ------- 多线程间通讯及多线程等待唤醒机制
- 中关村黑马程序员?
- 黑马程序员训练营
- 黑马程序员训练营
- 黑马训练营--枚举类型(二)
- 黑马训练营--注解(二)
- 黑马训练营学习笔记(二)
- 黑马程序员训练营:枚举
- Java通过JNI调用C++动态链接库
- 删除文件
- Hiberante3学习之路第一节 原创
- “中关村黑马程序员训练营”练习题(一)
- Android的webview加载本地html、本apk内html和远程URL
- “中关村黑马程序员训练营”练习题(二)
- “中关村黑马程序员训练营”练习题(三)
- 第三方
- 环境不错啊!!!
- 倒计时:18天 冬至快乐
- 考研了
- 数据库的学习,要的要的滴
- 我要努力学习c#
- TI公司真是大方