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;
}
}
答案 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;
}