好的,所以我的猜谜游戏快要结束了,我只是想弄清楚为什么中间部分不起作用。基本上用户输入一个五位数的数字,它应该采用他们的猜测中的位数,并添加他们的总数,并告诉他们他们得到多少数字正确,所以他们可以再次猜测,但它甚至没有通过我的循环任何帮助将不胜感激。
//Jonathan
import javax.swing.JOptionPane;
import java.util.Scanner;
public class Guessing
{
public static void main(String[] args)
{
//JOptionPane.showMessageDialog(null, "Welcome to Jonathan's number guessing game.");
int correctPosition = 0, sum = 0, numOfGuesses = 5, i;
String usersGuess, secretCode;
double number = Math.random() * 100000;
number = Math.round(number);
secretCode = Double.toString(number);
do
{
numOfGuesses--;
System.out.println(number);
Scanner keyboard = new Scanner(System.in);
usersGuess = keyboard.nextLine();
if (usersGuess.equalsIgnoreCase(secretCode))
{
JOptionPane.showMessageDialog(null, "You got the number correct!");
System.exit(0);
}
else if (!(usersGuess.equalsIgnoreCase(secretCode)))
{
for (i=0; i > 5; i++)
{
int digit = Character.getNumericValue(usersGuess.charAt(i));
if (digit == secretCode.charAt(i))
System.out.println(digit);
{
correctPosition++;
}
}
JOptionPane.showMessageDialog(null, "You have " + correctPosition + " numbers in the correct position." + " The sum of which are\n" + sum + " keep guessing!");
}
} while (numOfGuesses > 0);
}
}
答案 0 :(得分:3)
有几件事情很突出......
首先...
for (i = 0; i > 5; i++) {
当i
为0
时,i
将小于5
,这意味着i > 5
将为false
,并且循环将终止...
我认为你的意思是
for (i = 0; i < secretCode.length(); i++) {
事实上,因为你需要比较secretCode
和userGuess
中的每个字符,你实际上需要一个复合循环
for (i = 0; i < secretCode.length(); i++) {
for (int x = 0; x < usersGuess.length(); x++) {
//...
}
}
接下来,您要将usersGuess
值转换为int
,但要将其与char
的{{1}}值进行比较...
secretCode
这绝不相等,只需将int digit = Character.getNumericValue(usersGuess.charAt(i));
if (digit == secretCode.charAt(i))
的{{1}}值与char
的{{1}}值进行比较
userGuess
现在,这可能会产生错误的积极因素,更像是......
char
可能更合适,但我还会添加secretCode
语句来检查for (i = 0; i < secretCode.length(); i++) {
for (int x = 0; x < usersGuess.length(); x++) {
char digit = usersGuess.charAt(x);
if (digit == secretCode.charAt(i)) {
System.out.println(digit);
correctPosition++;
}
}
}
的{{1}},以确保它等于{{1}如果用户输入了一个无效的值,那么for (i = 0; i < secretCode.length(); i++) {
if (i < usersGuess.length()) {
char digit = usersGuess.charAt(i);
if (digit == secretCode.charAt(i)) {
System.out.println(digit);
correctPosition++;
}
}
}
会显示一条错误消息...我一直在做......
和...
if
实际执行的是......
length
我认为不是你想要的,我想你想要的更像是
usersGuess