Java謎題3:汽車
這個java謎題分為兩部分。您必須解決此部分才能看到下一部分。
為了使發動機暖機,我們從最簡單的開始。第二部分會更難。
如果你加速太快,車就會撞。但你能讓它比極限快十倍嗎?
package car; public final class Car { private static final int MAX_SPEED = 100; private int speed = 0; public synchronized void accelerate(int acceleration) { if (acceleration > MAX_SPEED - speed) crash(); else speed += acceleration; } public synchronized void crash() { speed = 0; } public synchronized void vroom() { if (speed > MAX_SPEED * 10) { // The goal is to reach this line System.out.println("Vroom!"); } } } |
作為一名司機,要做的就是把車速推過極限。程式碼中的任何內容都是允許的;程式碼之外的任何技巧都是不允許的。必須使用-djava.security.manager執行,否則setaccessible將無法工作。
package driver; import car.Car; public class Driver { public static void main(String args[]) { // TODO break the speed limit Car car = new Car(); car.accelerate(1001); car.vroom(); } } |
當你解決它時,看看第2部分。
這是汽車謎題第一部分的解決方案。而且,對於那些還沒有解決第一部分並且已經看到它的人 - 我們將加強第二輪的挑戰。以下是它的全部方法:
public synchronized void accelerate(int acceleration) { if (acceleration > MAX_SPEED - speed) crash(); else speed += acceleration; } |
我們怎樣才能使它超過限速?
檢查加速度時有個缺陷:它檢查加速度是否太高,但忘記檢查加速度是否太低。將變速箱置於倒車檔,將踏板踩到金屬(整數.min_值)上,車速表就會自動旋轉。
Car car = new Car(); car.accelerate(-1); car.accelerate(Integer.MIN_VALUE); car.vroom(); |
首先,我們將速度設定為-1。然後一路推動它:檢查integer.min_value>99是否透過,給出-1+integer.min_value。使汽車處於實際最高速度:Integer.MAX_VALUE。
讓我們透過檢查得到的速度而不是加速度來避免這種錯誤:
package car; public final class Car { private final int MAX_SPEED = 100; private int speed = 0; public synchronized void accelerate(int acceleration) { speed += acceleration; if (speed > MAX_SPEED) crash(); } public synchronized void crash() { speed = 0; } public synchronized void vroom() { if (speed > MAX_SPEED * 10) { // The goal is to reach this line System.out.println("Vroom!"); } } } |
你還能打破這輛車的限速嗎?
對此的解決方案(是的,那是複數)並不總是非常可靠。它們的工作效果可能取決於它們所處的環境。但透過一些調整和正確的方法,可以構建一個在實踐中始終有效的解決方案,而不需要花費任何大量時間。
相關文章
- Java謎題3:汽車 - 解決方案Java
- 平方謎題(3)
- Java謎題:小丑Java
- 乘法◆除法◆謎題(3)
- ●六數謎題●(3)
- ◆Π謎宮2019◆(8月3日附加謎題)
- Java謎題5:球(ball)Java
- Java 謎題 2:夢境Java
- Java謎題6:雞與蛋Java
- Java 謎題 7:餅乾(Cookie)JavaCookie
- Java 謎題4:液體(Liquid)JavaUI
- 豐田汽車問題解決方法(A3報告)
- Java謎題1:小丑 - 解決方案Java
- 大眾汽車:2024年Q3大眾汽車全球交付217.6萬輛汽車 同比下滑7.1%
- Java謎題7:餅乾-解決方案Java
- Java謎題5:球(ball)-解決方案Java
- 理想汽車:2023年3月理想汽車共交付新車20823輛 同比增長88.7%
- 蔚來汽車:2023年3月蔚來汽車交付新車10378臺 同比增長3.9%
- 君迪&58汽車:中國汽車保值率研究報告–2020年3月
- Java謎題6:雞與蛋-解決方案Java
- 中國汽車流通協會:2023年3月汽車市場脈搏報告
- 中國汽車工業協會:2023年3月汽車出口情況簡析
- 中國汽車工業協會:2022年3月汽車出口情況簡析
- 中國汽車流通協會:2022年3月汽車市場脈搏報告
- 中國汽車工業協會:2023年3月我國汽車整車出口情況簡析
- 理想汽車的Java 後端面經來了Java後端
- 中國汽車流通協會:2019年3月中國汽車保值率報告
- 中國汽車流通協會:2020年3月中國汽車保值率報告
- 中國汽車流通協會: 2023年3月中國汽車保值率報告
- 中國汽車工業協會:2023年3月我國汽車整車進口情況簡析
- 中國汽車工業協會:2022年1-3月汽車整車進口情況簡析
- 解謎遊戲謎題設計研究(三):推理類謎題設計遊戲
- 解謎遊戲謎題設計研究(一):物品類謎題設計遊戲
- 中國汽車流通協會:2019年3月份汽車消費指數為65.4
- 中國汽車流通協會:2020年3月份汽車消費指數為63.0
- 中國汽車流通協會:2023年3月份汽車消費指數為72.5
- 中國汽車流通協會&精真估:2022年3月中國汽車保值率
- 中國汽車流通協會:2021年3月份汽車消費指數為71.3