Java小程序:十进制转二进制

来源:互联网 发布:偶像梦幻祭卡牌数据 编辑:程序博客网 时间:2024/04/27 05:26
/** * 9.编写一个程序,它先将键盘上输入的一个字符串转换成十进制整数,然后打印出这个十进制整数对应的二进制形式。提示如下: * 这个程序要考虑输入的字符串不能转换成一个十进制整数的情况 * ,并对转换失败的原因要区分出是数字太大,还是其中包含有非数字字符的情况。提示:十进制数转二进制数的方式是用这个数除以2 * ,余数就是二进制数的最低位,接着再用得到的商作为被除数去除以2 * ,这次得到的余数就是次低位,如此循环,直到被除数为0为止。其实,只要明白了打印出一个十进制数的每一位的方式 * (不断除以10,得到的余数就分别是个位,十位,百位),就很容易理解十进制数转二进制数的这种方式。 * @author yajun */public class Binary {public static void main(String[] args) {//局部变量String str = null;int deci;int bina = 0;Scanner scan=new Scanner(System.in);Binary obj=new Binary();//逻辑System.out.println("欢迎使用10进制转二进制程序,请输入2的31次方范围内的数字,输入exit,退出程序,谢谢。");while(true){str=scan.nextLine();if(str.equals("exit")){break;}deci=obj.convert(str);if(deci!=-1){bina=obj.toBinary(deci);}//调试System.out.println("用户输入:"+str+"\t转换为二进制为:"+bina);}}private int toBinary(int decimal){int binary;StringBuilder sb=new StringBuilder();int remainder;//业务逻辑while(decimal!=0){remainder=decimal%2;decimal/=2;sb.append(remainder);}sb.reverse();binary=Integer.valueOf(sb.toString());//调试//System.out.println(sb);return binary;}//测试toBinary方法是否正确@Testpublic void testToBinary(){int data=10;int result=toBinary(data);Assert.assertEquals(Integer.toBinaryString(data), result+"");}//判断字符串是否可以转换成整数,如果可以转换之private int convert(String str){int result = -1;char[] temp;String message;boolean isChar = false;try {result=Integer.valueOf(str);} catch (NumberFormatException e) {temp=str.toCharArray();for(char ch:temp){if(!(ch>='0'&&ch<='9')){message="字符串中包含非数字字符:"+ch;isChar=true;System.out.println(message);}}if(!isChar&&(Double.valueOf(str)>=Math.pow(2, 31))){message="数字太大,超出了java中int值的范围";System.out.println(message);}}//End of tryreturn result;}@Testpublic void testConvert(){//convert("yajun");int result=convert(String.valueOf((long)Math.pow(2, 32)-1));System.out.println(result);}@Test//1除2的0余1public void testDivision(){System.out.println(1/2);System.out.println(1%2);}}

0 0
原创粉丝点击