#java #class #object #infinite-loop
Вопрос:
Мы должны создать программу на java, в которой компьютер случайным образом угадывает число от 1 до 10 и позволяет пользователю угадать это число. Это то, что у меня есть до сих пор, когда я выполняю в cmd, я получаю следующую ошибку:
1.) В строке № 17 : незаконное начало выражения
2.) В строке номер 17 : не удается найти символ
import java.util.Scanner;
import java.util.Random;
class NumberGuess{
Random r = new Random();
final int upperbound = 10;
int random = r.nextInt(upperbound);
int inputnum;
public static void main(String[] args) {
NumberGuess whileloop = new NumberGuess();
System.out.println("You have to guess the number");
System.out.println("----------------------------");
System.out.println("Hint: Number is less than 10");
System.out.println("----------------------------");
Getter getinput = new Getter();
while(whileloop.inptnum != whileloop.random){
Getter.takeUserInput();
Getter.isCorrectNumber();
}
}
}
class Getter{
static void takeUserInput(){
NumberGuess forinput = new NumberGuess();
Scanner sc = new Scanner(System.in);
System.out.println("Enter your guess:");
forinput.inputnum = sc.nextInt();
}
static void isCorrectNumber(){
NumberGuess forcompare = new NumberGuess();
System.out.println(forcompare.random);
Getter takeinp = new Getter();
if(forcompare.inputnum == forcompare.random){
System.out.println("The guess is correct");
}
else{
System.out.println("The guess is incorrect try again");
}
}
}
Комментарии:
1. Некоторые советы: как вы можете видеть, ваш код не выглядит должным образом отформатированным в вашем вопросе. Отформатируйте свой код, выделив его и нажав
{}
кнопку над текстовым полем. Дайте вашим переменным значимые имена; если вы назовете их obj1, obj2, a, b и т. Д. мы не можем следовать вашей логике, и все же вы ожидаете, что мы дадим вам ответ.
Ответ №1:
Вы не можете создать новый объект в геттере класса. Вы должны отправить объект создания.
Getter.takeUserInput(obj6)
Getter.isCorrectNumber(obj6);
static void takeUserInput(NumberGuess obj6){
Scanner sc = new Scanner(System.in);
System.out.println("Enter your guess:");
obj6.b = sc.nextInt();
}
static void isCorrectNumber(NumberGuess obj4){
...
}
Ответ №2:
В вашем классе NumberGuess у вас есть атрибут inputnum, но в строке 17 (пока) вы пытаетесь получить доступ к атрибуту «inptnum», которого не существует. 😀
Обновить:
Вот фиксированный код:
import java.util.Scanner;
import java.util.Random;
class NumberGuess{
Random r = new Random();
final int upperbound = 10;
int random = r.nextInt(upperbound);
int inputnum;
public static void main(String[] args) {
NumberGuess whileloop = new NumberGuess();
System.out.println("You have to guess the number");
System.out.println("----------------------------");
System.out.println("Hint: Number is less than 10");
System.out.println("----------------------------");
Getter getinput = new Getter();
while(whileloop.inputnum != whileloop.random){
Getter.takeUserInput();
Getter.isCorrectNumber();
}
}
}
class Getter{
static void takeUserInput(){
NumberGuess forinput = new NumberGuess();
Scanner sc = new Scanner(System.in);
System.out.println("Enter your guess:");
forinput.inputnum = sc.nextInt();
}
static void isCorrectNumber(){
NumberGuess forcompare = new NumberGuess();
System.out.println(forcompare.random);
Getter takeinp = new Getter();
if(forcompare.inputnum == forcompare.random){
System.out.println("The guess is correct");
}
else {
System.out.println("The guess is incorrect try again");
}
}
}
Комментарии:
1. можете ли вы внести необходимые изменения в код
2. Спасибо за обновление, не могли бы вы сказать мне, какую строку вы изменили и какие изменения внесли
3. Я просто исправляю имя атрибута в строке 17: от inptnum до inputnum.