《Head Java Frist》
Code Magnets(代码磁铁P54)
我们需要将以上7个板块的代码整合成可以运行并要输出成为我们想要的结果的一串代码
通过逻辑条件语法来将乱序的代码重构成一串新的代码如下:
class Shuffle1 { public static void main(String [] args) { int x = 3; while(x >0) { if (x > 2) { System.out.print("a"); } if (x == 2) { System.out.print("b c"); } x = x - 1; System.out.print("-"); if (x == 1) { System.out.print("d"); x = x - 1; } } } }
目标结果生成!!但是因为在最后x=0了,在编译器中这里最后一句x = x - 1的存在已经没有其所需要的意义了,但是可以在这个时候起到一个跳出while循环的作用。所以改成x = 0会有其实际意义
BE the compiler(成为编译者P55)
尝试修复一些存在一定错误的源文件
1 public class Exercise1b { 2 public static void main(String [] args) { 3 int x = 1; 4 while ( x < 10 ) { 5 x = x + 1; 6 if ( x < 3) { 7 System.out.println("big x"); 8 } 9 } 10 } 11 }
这是A组代码,我将“x > 3”改成了“x < 3”能让这串代码输出“big x”不然的话x = 1不在3-10的范围内是无法进入下一个循环,只能进入一个死循环。然后在if条件语句前加入了x = x +1,如果不加则会陷入一个无线循环,这样最终的代码只会循环一次输出“big x”
1 class Exercise1b { 2 public static void main(String [] args) { 3 int x = 1; 4 while ( x < 10 ) { 5 x = x + 1; 6 if ( x < 3) { 7 System.out.println("big x"); 8 } 9 } 10 } 11 }
B组代码中缺少开头的class Exercise2b,加上这段就可以运行了
1 class Exercise3b { 2 public static void main(String [] args) { 3 int x = 5; 4 while ( x > 1 ) { 5 x = x - 1; 6 if ( x < 3) { 7 System.out.println("small x"); 8 } 9 } 10 } 11 }
C组代码缺少了“public static void main(String [] args)”这一段程序入口加上便能运行
总结:三组代码中,B和C组的问题存在结构上的问题,而A组是存在语法上的错误,陷入了死循环。