【发布时间】:2015-11-17 23:09:28
【问题描述】:
这是我在这个网站上的第一篇文章,所以如果我违反规则或我不知道的东西,我非常抱歉。也就是说,我的老师已分配我制作一个 Simon Says 程序,我在课堂上苦苦挣扎,所以我正在寻找其他帮助途径。规则如下:
完成这项任务的方式完全取决于您。代码必须完全按照规定工作才能获得适当的信用。你将设计游戏西蒙。在西蒙有四种颜色:红色、蓝色、绿色和黄色。用户必须按照正确的顺序选择 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;
}
}
【问题讨论】:
-
为什么你使用
try-catch块作为NullPointerException,然后只是退出而不记录任何有关异常的信息?至少使用npe.printStackTrace()这样您就可以看到导致异常的原因。 -
当我用谷歌搜索我得到的错误时,我在其他网站上找到了该解决方案,这对我来说非常有效。如果有其他方法可以避免这个错误,你能告诉我吗?
-
避免此错误的适当方法是不要尝试对 null 对象调用对象方法。这意味着您转到引发错误的行并找出哪个对象为空,以及为什么它没有初始化为您期望的值。
-
开始here。基本上,当您尝试在
null的对象上调用方法时,就会出现NullPointerException。当您捕获该异常时您正在退出这一事实强烈表明设置为null的对象是您的问题的一部分
标签: java if-statement for-loop joptionpane do-while