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;
}
}
ответ
Это довольно просто. Вам не нужно выходить из цикла, когда совпадают числа. Вы просто возвращаете 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;
}
BTW, код имеет смысл, если вы дадите пользователю некоторые подсказки, которые помогут им угадать секретный номер.
ничего себе я не могу в это поверить. Не могли бы вы объяснить мне, почему это? Я пытаюсь выучить язык. Спасибо. – Rawrqqplz
@Rawrqqplz Что вы не понимаете? Вы можете выйти из цикла for одним из нескольких способов: 1. когда условие становится ложным 2. вызывая 'break' 3., возвращаясь из метода, который содержит цикл (вызывая' return something; '). Поскольку вы хотите выходить из цикла и возвращать n в одно и то же время, самое простое дело - 'return n;'. – Eran
Как я могу включить подсказки, например, если userNumber выше, чем экран secretNumber, «ваш номер слишком высок» и тому подобное? Потому что мне нечего было бы возвращать для метода? и мне нужно что-то вернуть? – Rawrqqplz
Это чище, чтобы закрыть 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;
}
- 1. Как исправить этот код?
- 2. Как исправить этот код?
- 3. как исправить этот код
- 4. Как исправить этот код Java?
- 5. Как исправить этот код значений
- 6. Как исправить этот код функции
- 7. Как исправить этот код Swift?
- 8. Как исправить этот SQL-код?
- 9. Как исправить этот код js?
- 10. Как исправить этот рекурсивный код?
- 11. Как исправить этот код vba?
- 12. Можно ли исправить этот код?
- 13. NSMutableArray: Как исправить этот код «EXC_BAD_ACCESS»?
- 14. Как исправить этот код в java
- 15. Как исправить этот awk-код без eval?
- 16. Unity C# - Как исправить этот код?
- 17. Как я могу исправить этот код MySQL
- 18. Как исправить этот код для темы wordpress
- 19. Как исправить этот код для заставки?
- 20. как исправить этот код отражения в java?
- 21. Как исправить этот неверный код PHP
- 22. getShortestPath; Как я могу исправить этот код
- 23. как я могу исправить этот код
- 24. Кнопка недоступна. Как исправить этот код?
- 25. Windows 8.1 Как исправить этот устаревший код?
- 26. Как я могу исправить этот код jquery/js код
- 27. Как исправить этот шаблон:
- 28. Как исправить этот TypeError?
- 29. Как исправить этот загрузчик?
- 30. Как исправить этот сценарий
Этот синтаксис не является действительным. Посмотрите на свой 'if {} return n; else {} ' –
Редакция 3 изменила код, поэтому откат назад к обороту 2 .... – hyde
« Как исправить этот код? »... ну, я думаю, что переписывание его синтаксически и логически звуковым образом звучит как план , Это не компилируется, и на самом деле это не похоже на что-либо императивное. Вы, наверное, должны сначала прочитать некоторые уроки. – EpicPandaForce