如何修复此代码?

时间:2014-10-12 09:30:17

标签: java

public static int guess (int numberOfGuesses, int secretNumber) {
    Scanner sc = new Scanner(System.in);

    for(int n = 1; n <= numberOfGuesses; n++){
      System.out.println("Guess "+n+" of "+numberOfGuesses+":");
      int userNumber = sc.nextInt();
      if(userNumber == secretNumber){
        return n;       
      }
      while(userNumber > secretNumber){
        System.out.println("The guess is too big");
      }
      while(userNumber < secretNumber){
        System.out.println("The guess is too small");
      }
       while(userNumber > 100){
        System.out.println("The number "+userNumber+" is not valid. ");
       }
    }
    return -1;
  }
}

2 个答案:

答案 0 :(得分:1)

这很简单。当数字匹配时,你不必从循环中断。您只需根据需要返回n即可。如果循环退出而未找到secretNumber,则返回-1

public static int guess (int numberOfGuesses, int secretNumber) {

    Scanner sc = new Scanner(System.in);

    for(int n = 1; n <= numberOfGuesses; n++){
        System.out.println("Guess "+n+" of "+numberOfGuesses+":");
        int userNumber = sc.nextInt();

        if(userNumber == secretNumber){
            return n;       
        }
    }
    return -1;
}
顺便说一下,如果你给用户一些可以帮助他们猜出秘密号码的提示,代码会更有意义。

答案 1 :(得分:0)

使用它后关闭Scanner更干净,所以我会做这样的事情:

public static int guess(int numberOfGuesses, int secretNumber) {
        Scanner sc     = new Scanner(System.in);
        int userNumber = secretNumber / 2;
        boolean found  = false;
        int tries;
        for (tries = 0 ; tries <= numberOfGuesses && !found ; tries++) {
            userNumber = sc.nextInt();
            found      = secretNumber == userNumber;
        }
        sc.close();
        return found ? tries : -1;
    }