每日学到 13
写代码的思路和简化代码真的很重要,看到别人优秀的代码真的很兴奋,原来可以这样写。
先放上自己写的代码
import java.util.Scanner;public class Demo6 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请输入一个整数:");int num1 = sc.nextInt();int num2 = num1;int num3 = num1;int[] array1 = new int[100];int count1 = 0;for (int i = 0;;i++) {array1[i] = num1%2;if (num1/2==0) {break;}num1 /= 2;count1++;}System.out.println(count1);System.out.print("二进制为:");for (int i = count1; i >=0; i--) {System.out.print(array1[i]);}int[] array2 = new int[100];int count2 = 0;for (int i = 0;;i++) {array2[i] = num2%8;if (num2/8==0) {break;}num2 /= 8;count2++;}System.out.print("八进制为:");for (int i = count2; i >=0; i--) {System.out.print(array2[i]);}int[] array3 = new int[100];int count3 = 0;for (int i = 0;;i++) {array3[i] = num3%16;if (num3/16==0) {break;}num3 /= 16;count3++;}System.out.print("十六进制为:");for (int i = count3; i >=0; i--) {if (array3[i]==10) {System.out.print("A");}else if (array3[i]==11) {System.out.print("B");}else if (array3[i]==12) {System.out.print("C");}else if (array3[i]==13) {System.out.print("D");}else if (array3[i]==14) {System.out.print("E");}else if (array3[i]==15) {System.out.print("F");}else {System.out.print(array3[i]);}}}
}
再放一个从CSDN上找到的代码
import java.util.Scanner;public class Demo00 {public static void main(String[] args) {System.out.println("请输入一个整数");Scanner sc = new Scanner(System.in);int number = sc.nextInt();// 转换为二进制int[] numEr = new int[100];int indexEr = 0;for (int i = number; i > 0; i /= 2, indexEr++) {numEr[indexEr] = i % 2;}System.out.println("二进制:");for (int i = indexEr - 1; i >= 0; i--) {System.out.print(+numEr[i]);}System.out.println();// 转换为八进制int[] numBr = new int[100];int indexBr = 0;for (int i = number; i > 0; i /= 8, indexBr++) {numBr[indexBr] = i % 8;}System.out.println("八进制:");for (int i = indexBr - 1; i >= 0; i--) {System.out.print(numBr[i]);}System.out.println();// 转换为十六进制int[] nums = new int[100];int index = 0;for (int i = number; i > 0; i /= 16, index++) {nums[index] = i % 16;}System.out.println("十六进制:");for (int i = index - 1; i >= 0; i--) {if (nums[i] == 10) {System.out.println("A");} else if (nums[i] == 11) {System.out.println("B");} else if (nums[i] == 12) {System.out.println("C");} else if (nums[i] == 13) {System.out.println("D");} else if (nums[i] == 14) {System.out.println("E");} else if (nums[i] == 15) {System.out.println("F");} else {System.out.print(nums[i]);}}}
}
虽然两段代码都能实现将十进制转变为二进制,八进制,十六进制,但是简洁度,清晰度,易理解度,真的比我写的好的太多了,将输入的number直接赋值给i,然后让i进行循环条件判断,以及迭代操作。而我直接将输入的number进行变化,导致我又需要设置一个新变量去记录初始的number值,又因为我是直接使用number进行循环操作的,并且没有使用循环条件,所以我这是死循环,在循环操作中设置了一个条件,当满足这个条件时再break,我这样写,写了很多重复代码。看了下面的这个代码,真的学习到了。
更多推荐
每日学到 13
发布评论