“中关村黑马程序员训练营”练习题(二)
/*
* 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,导致运行异常,这里我进行了测试,受到启发发现了原因
}
}
“中关村黑马程序员训练营”练习题(二)相关推荐
- 中关村“黑马程序员”训练营
http://edu.csdn.net/heima/dotnetDyhGkk.html?from=webim0423 附带3篇:http://www.blogjava.net/java2java ht ...
- 黑马程序员训练营十道满分题解
黑马程序员训练营基础测试题十道 代码下载见GitHubs:https://github.com/fairyxingyun/Itheima_exam_10_answer 1. 编写一个函数,函数内输出一 ...
- 飞鸽传书官方网站 创立黑马程序员训练营
张孝祥于2001年创办锐信科技有限公司,2005年创办传智播客科技有限公司,飞鸽传书官方网站 创立黑马程序员训练营,一直致力于陶瓷的飞鸽传书软件开发教育事业,张孝祥老师善于解剖和分析问题,善于使用生动 ...
- 黑马程序员-黑马程序员训练营基础测试
---------------------- ASP.Net+Unity开发. .Net培训.期待与您交流! ---------------------- 为了帮助更多的人了解黑马,让更多想知道黑马测 ...
- 黑马程序员C++实战(二)——基于多态的职工管理系统完整代码
本文转载自:https://github.com/AnkerLeng/Cpp-0-1-Resource.git 视频见:https://www.bilibili.com/video/av4155972 ...
- 黑马程序员—2014毕业生薪资调查报告——半年报
文章来源:黑马程序员,黑马论坛. <2014毕业生薪资调查报告--半年报> 前言:2014年,被冠以"最难就业季",727万大学毕业生即将离开校园走上自己的职业发展道路 ...
- 想进入黑马程序员——传智播客学习
前些天突然有感自己即将毕业了,小小的感触了一番.反思反思自己这几年大学的所作所为,确实学到的东西太少了,本来是学计算机网络方面的,现在都偏离了本行,搞起了软件方面,可是软件方面的基础也不扎实,面临的各 ...
- “黑马程序员”宣传语有奖大征集《参赛作品》
我的作品:"带上梦想,准备好挑战.黑马,只为让你赢在终点." 作品阐述:"中关村黑马程序员训练营"是中关村软件园.CSDN,并委托传智播客进行教学实施的软件开发 ...
- 黑马程序员_基础测试
-------android培训.java培训.期待与您交流! ---------- 黑马程序员训练营基础测试题及个人代码(包含思路.步骤和基本注释) 1. 编写程序计算12+22+32+....+1 ...
最新文章
- 25 iOS performance TipsTricks 笔记
- 零基础学Python(第十四章 字典)
- 仿IOS应用APP下载页源码
- 清翔电子单片机原理图stc89c52_1000. 电子编程入门到工程师--从看得到开始
- xcode免证书真机调试iphone(ipad)程序的具体方法(总结贴)转贴)
- 从解放劳动力来看未来的科技进程
- python获取列表控件_PyQt学习随笔:ListView控件获取当前选择项的方法
- centos系统上实现微信语音amr格式,qq语音slk格式转mp3
- 微软智能云Azure在华新增数据中心区域正式启用
- 分子排列不同会导致_高分子物理-中国大学mooc-题库零氪
- 基于JavaEE的山水房屋中介管理系统_JSP网站设计_SqlServer数据库设计
- SQL server 删除注册表
- Qt基于networkmanager嵌入式linux的wifi网络连接
- vue3+vite assets动态引入图片的几种方式,解决打包后图片路径错误不显示的问题
- wkhtmltopdf 照片不显示的问题
- 《计算传播学导论》读书笔记:第二章 文本分析简介
- 谈谈制造企业如何制定敏捷的数字化转型策略
- Swift 第三方库整理
- 小工具:用C++读取TGA并输出数据到文本
- oracle opaque_transform,使用dblink导致的/*+ OPAQUE_TRANSFORM */
热门文章
- 50、诗句按照特定个数输出
- 每天干的啥?(2018.09)
- JavaScript Array --map()、filter()、reduce()、forEach()函数的使用
- 微信业务域名两个解决方法
- 阿里巴巴心石:面向5G优酷正在做三件事
- 小红书爆款笔记分析,新账号如何快速打造爆款文章
- EasyExcel报错com.alibaba.excel.exception.ExcelGenerateException: java.lang.ExceptionInInitializerError
- PayPal收款后的注意事项(PAYPAL用户必看)
- 【Java基础语法】安排,写的太好了
- 软件自动更新功能的实现