Программа для угадывания числа на java с помощью класса

#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.