Java猜测游戏调试问题我无法解决

时间:2015-03-19 00:01:45

标签: java debugging for-loop

好的,所以我的猜谜游戏快要结束了,我只是想弄清楚为什么中间部分不起作用。基本上用户输入一个五位数的数字,它应该采用他们的猜测中的位数,并添加他们的总数,并告诉他们他们得到多少数字正确,所以他们可以再次猜测,但它甚至没有通过我的循环任何帮助将不胜感激。

//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);

  }  
}

1 个答案:

答案 0 :(得分:3)

有几件事情很突出......

首先...

for (i = 0; i > 5; i++) {

i0时,i将小于5,这意味着i > 5将为false,并且循环将终止...

我认为你的意思是

for (i = 0; i < secretCode.length(); i++) {

事实上,因为你需要比较secretCodeuserGuess中的每个字符,你实际上需要一个复合循环

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