这是一系列Java难题中的第一个,它以挑战性和有趣的方式让您的Java技能经受考验!
谜题由一些给定的Java代码组成,其中有一行似乎无法企及。由你来找到它的漏洞,使用Java的微妙行为来使执行完成。
谜题
你怎么能把20个小丑装进一辆大众汽车?
提供两个类:一个空小丑类和一个大众类,您可以添加小丑。当您尝试添加小丑时,会检查它是否已满。尽管你努力尝试,总有多余的小丑…
package clowns; public class Clown { }
package clowns; import java.util.HashSet; import java.util.Set; public class Volkswagen { private static final int CAPACITY = 5; private Set<Clown> clowns = new HashSet<Clown>(); public synchronized void add(Clown clown) { if (clowns.size() >= CAPACITY) { throw new IllegalStateException("I'm full"); } else { clowns.add(clown); } } public synchronized void done() { if (clowns.size() == 20) { // The goal is to reach this line System.out.println("I'm a Volkswagen with 20 clowns!"); } } }
|
写一个类,当执行时将20个小丑推入小汽车,并到达标记线。这个不会真正起作用,只是为了让你开始:
package you; import clowns.Clown; import clowns.Volkswagen; public class You { public static void main(String args[]) { // TODO put 20 clowns into a Volkswagen Volkswagen vw = new Volkswagen(); for (int i = 0; i < 20; i++) { vw.add(new Clown()); } vw.done(); } }
|