我在Gitee上上传了其他一些题目的答案: Gitee项目地址参考下面的博客
《Java语言程序设计》(第10版)Y.Daniel Liang 课后编程参考答案
JAVA循环实现十进制转二进制
编写程序,提示用户输入一个十进制整数,然后显示对应的二进制值,循环实现。
方法一:
字符串操作
package chapter5;
import java.util.Scanner;
/****************************************************************
* Author:icynlau
* Description: 十进制转二进制
* Date:2021/4/4
* ***************************************************************
*/
public class exc5_37 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.print("Enter a number in Decimal: ");
int number10=input.nextInt();
StringBuilder number2=new StringBuilder("");
while(number10>0) {
number2.insert(0,(char)((int)'0'+number10%2)+"");
number10/=2;
}
System.out.print("10->2 number is "+number2);
}
}
**
方法二:
**
幂比较方法
package chapter5;
import java.util.Scanner;
/****************************************************************
* Author:icynlau
* Description: 十进制转二进制 幂比较
* 不能简单的连续 取余 和 除以2 这样循环,因为这样得到的数字是左右颠倒的
* 可以换个思路,从前面比较大的2的幂数向2^0比较,得到和输入的十进制数对应的正序二进制数
* 参考CSDN swy_swy_swy大佬
* Date:2021/4/4
* ***************************************************************
*/
public class exc5_37_1 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.print("Enter a number in Decimal: ");
int number10=input.nextInt();
int tmp=1;
while(Math.pow(2, tmp)<=number10) {
tmp++;
}
//得到刚好比输入的十进制数大的2的整数次幂
tmp--;
System.out.print("10->2 number is ");
for(;tmp>=0;tmp--) {
if(Math.pow(2,tmp)<=number10) {
System.out.print(1);
number10-=Math.pow(2, tmp);
}else {
System.out.print(0);
}
}
}
}