所以我在学校开设了计算机科学课程,学习Java。我们被指派做一个简单的基于文本的猜谜游戏。直到这一刻我完成了,我似乎无法找到我搞砸的地方,因为当我运行核心时没有打印出来。
这是代码:
public class GuessGame
{
public static void main(String[] args)
{
new GuessGame();
}
public GuessGame ()
{
char end = 'y';
while (end!='y')
{
System.out.println ("Welcome to the Guessing Game!");
System.out.println ("\nThe computer has picked a number");
System.out.println ("between 1 and 100. Try to guess it.");
int num = (int)(Math.random()*(100-1)+1);
int guess = IBIO.inputInt ("Guess the number: ");
if (guess==num)
System.out.println ("You got it!");
else if (guess>num)
System.out.println ("That is too high.");
else
System.out.println ("That is too low.");
end = IBIO.inputChar ("Exit game? (y/n)");
}
}
}
顺便说一句,IBIO是我的IB程序提供的一个类,我们用它来制作输入/输出语句。
这是IBIO.java:
public class IBIO
{
static void output (String info)
{
System.out.println (info);
}
static void output (char info)
{
System.out.println (info);
}
static void output (byte info)
{
System.out.println (info);
}
static void output (int info)
{
System.out.println (info);
}
static void output (long info)
{
System.out.println (info);
}
static void output (double info)
{
System.out.println (info);
}
static void output (boolean info)
{
System.out.println (info);
}
static String input (String prompt)
{
String inputLine = "";
System.out.print (prompt);
try
{
inputLine = (new java.io.BufferedReader (new java.io.InputStreamReader (System.in))).readLine ();
}
catch (Exception e)
{
String err = e.toString ();
System.out.println (err);
inputLine = "";
}
return inputLine;
}
static String inputString (String prompt)
{
return input (prompt);
}
static String input ()
{
return input ("");
}
static int inputInt ()
{
return inputInt ("");
}
static double inputDouble ()
{
return inputDouble ("");
}
static char inputChar (String prompt)
{
char result = (char) 0;
try
{
result = input (prompt).charAt (0);
}
catch (Exception e)
{
result = (char) 0;
}
return result;
}
static byte inputByte (String prompt)
{
byte result = 0;
try
{
result = Byte.valueOf (input (prompt).trim ()).byteValue ();
}
catch (Exception e)
{
result = 0;
}
return result;
}
static int inputInt (String prompt)
{
int result = 0;
try
{
result = Integer.valueOf (input (prompt).trim ()).intValue ();
}
catch (Exception e)
{
result = 0;
}
return result;
}
static long inputLong (String prompt)
{
long result = 0;
try
{
result = Long.valueOf (input (prompt).trim ()).longValue ();
}
catch (Exception e)
{
result = 0;
}
return result;
}
static double inputDouble (String prompt)
{
double result = 0;
try
{
result = Double.valueOf (input (prompt).trim ()).doubleValue ();
}
catch (Exception e)
{
result = 0;
}
return result;
}
static boolean inputBoolean (String prompt)
{
boolean result = false;
try
{
result = Boolean.valueOf (input (prompt).trim ()).booleanValue ();
}
catch (Exception e)
{
result = false;
}
return result;
}
}
很抱歉这个冗长的问题。我是Java的新手。
答案 0 :(得分:1)
计算机正在按照你的说法完成。当GuessGame
的构造函数运行时:
将end
声明为char
局部变量,并将其初始化为包含'y'
:
char end = 'y';
在end
不包含'y'
的情况下运行循环体:
while (end!='y')
(由于end
包含'y'
,它不运行循环体;它会在循环后跳转到代码。< / p>
答案 1 :(得分:1)
问题是你永远不会进入初始循环
char end = 'y';
while (end!='y')
您将end
实例化为y
,然后仅在end
不是y
的情况下输入,这将永远为假,因此永远不会进入循环。
只需更改end
char end = 'n';
此外,您不必在IBIO类中输出值
result = (char) 0;
您只需执行result = 0
即可获取ASCII值。
我还会在循环之外声明num
和guess
,以避免每次重新声明它们,就像您对end
所做的那样。
最后,我将直接调用output
,而不是使用不同的参数类型声明7 System.out.println
方法而不是只接收System.out.println(value)
接收参数。
我会对只使用接收参数调用一个方法的所有其他方法应用相同的逻辑。
答案 2 :(得分:0)
这两行明显相互矛盾,while循环永远不会执行。初始化结束为不同的值。
char end =&#39; y&#39;;
while(结束!=&#39; y&#39;)
答案 3 :(得分:0)
使用值&#39; y&#39;初始化变量char end。
char end = 'y';
然后循环的条件是
while (end!='y')
这种情况永远不会实现,这就是它退出循环的原因。更改变量结束的初始值。