本系列博客习题来自《算法(第四版)》,算是本人的读书笔记,如果有人在读这本书的,欢迎大家多多交流。为了方便讨论,本人新建了一个微信群(算法交流),想要加入的,请添加我的微信号:zhujinhui207407 谢谢。另外,本人的个人博客 http://www.kyson.cn 也在不停的更新中,欢迎一起讨论
a. System.out.println('b'); b. System.out.println('b' + 'c'); c. System.out.println((char) ('a' + 4));
b的ASCII码为98,c的为99
b 197 e
1.1.9编写一段代码,将一个正整数 N 用二进制表示并转换为一个 String 类型的值 s。
解答:Java 有一个内置方法 Integer.toBinaryString(N) 专门完成这个任务,但该题的目的就是给出这个方法的其他实现方法。下面就是一个特别简洁的答案:
String s = ""; for (int n = N; n > 0; n /= 2) s = (n % 2) + s;
虽然够简洁,但效率不怎么样,Java源码的的实现效率可以,源码地址: Java Integer 源码
public static String decimalToBinary(int n) { String resultString = ""; for (int i = 31; i >= 0; i--) resultString = resultString + (n >>> i & 1); return resultString; }
ToBinaryStringExecise.java
1.1.10 下面这段代码有什么问题?
int[] a;
for (int i = 0; i < 10; i++)
a[i] = i * i;
解答:它没有用 new 为 a[] 分配内存。这段代码会产生一个 variable a might not have been initialized 的编译错误。**
1.1.11 编写一段代码,打印出一个二维布尔数组的内容。其中,使用 * 表示真,空格表示假。打印出行号和列号。
```java
private static void printout(boolean[][] a1){
for (int i = 0; i < a1.length; i++) {
for (int j = 0; j < a1[i].length; j++) {
if (a1[i][j]){
System.out.println(String.format(Locale.CHINA,"%d %d *",i+1,j+1));
} else {
System.out.println(String.format(Locale.CHINA,"%d %d /",i+1,j+1));
}
}