這是我在這個網站上的第一篇文章,所以我非常抱歉,如果我違反規則或我不知道的東西。也就是說,我被指派由我的老師製作一個SimonSays的課程,我正在爲這個課程苦苦掙扎,所以我正在尋找其他的幫助途徑。規則如下:爪哇西蒙說方案問題
完成此任務的方式完全取決於您。代碼必須完全按照指定的方式工作以獲得適當的信用。你會設計比賽西蒙。在西蒙有四種顏色:紅色,藍色,綠色和黃色。用戶必須按照正確的順序選擇Simon採用的相同顏色。 Simon選擇的顏色必須是隨機的。每個連續輪Simon都會在序列中添加另一種顏色。當用戶失敗時,西蒙應該告訴用戶他們持續了多少輪。你可以玩多少回合不應該有限制。此任務不需要GUI。如果您使用JOptionPane選擇顏色,則必須使用紅色,藍色,綠色和黃色的字母快捷方式。您還必須包含遊戲說明。您還必須跟蹤每場比賽的高分,並允許用戶輸入他們的名字以獲得高分。如果關閉該程序,則不必保持分數;只有在程序打開時。
當我執行我的代碼時,它不會在用戶給出正確答案時繼續遊戲,而是在一次循環後終止。奇怪的是,它似乎只是循環,如果我給它一個錯誤的答案。最後,我想指出,我的程序是非常基礎的,因爲這是我真正知道如何使用的。感謝您的幫助
package stuff;
import java.util.ArrayList;
import javax.swing.JOptionPane;
public class Simon {
String s = "";
String a = "";
String c = "";
String d = "";
boolean b = true;
boolean b2 = true;
String obj[] = { "Red", "Yellow", "Green", "Blue" };
ArrayList<String> colors = new ArrayList<String>();
String[] options = new String[] { "Red", "Yellow", "Green", "Blue" };
int count = 0;
int count2 = 0;
int score = 0;
public String simon() {
do {
int c = ((int) (Math.random() * 4));
if (c == 0)
colors.add(obj[0]);
else if (c == 1)
colors.add(obj[1]);
else if (c == 2)
colors.add(obj[2]);
else if (c == 3)
colors.add(obj[3]);
else {
JOptionPane.showMessageDialog(null,
"weird stuff happened bruh");
}
JOptionPane.showMessageDialog(null, colors.get(count));
b2 = true;
while (b2) {
for (int i2 = 0; i2 < colors.size(); i2++) {
a = JOptionPane.showInputDialog("put letter");
if(a != null){
if (a.equalsIgnoreCase(colors.get(i2))) {
JOptionPane.showMessageDialog(null,
"Your color is right" + score);
score += 1;
if (i2 == colors.size() - 1)
b2 = false;
else {
JOptionPane.showMessageDialog(null, "weird stuff happened bruh fo realz");
}
} else {
b2 = false;
b = false;
}
}else{
System.exit(0);
}
}
}
count++;
} while (b == false);
return s;
}
}
爲什麼你使用'''試穿catch'''塊了'''NullPointerException''',然後就退出無記錄有關例外的任何事情?至少使用'''npe.printStackTrace()'''這樣你就可以看到什麼導致了這個異常。 –
當我在搜索錯誤時遇到了錯誤,我在其他網站上找到了解決方案,該解決方案一直爲我完美工作。如果還有其他方法可以避免這個錯誤,你能告訴我嗎? –
避免此錯誤的適當方法是不要嘗試在空對象上調用對象方法。這意味着你去到拋出錯誤的那一行,找出哪個對象爲空,以及爲什麼它沒有初始化爲你期望的值。 –