Ошибка в номере строки = inputLine.nextInt (); - PullRequest
0 голосов
/ 24 сентября 2019

У меня проблема, потому что она говорит, что int не может быть разыменован!

public class EducationalQuiz1{
    public static void main(String args[]){

        int number;
        int inputLine;

        System.out.println("Select Topic:");
        System.out.println("1. Handball");
        System.out.println("2. Football");
        System.out.println("3. Basketball");
        System.out.println("4. Wrestling");
        String sport = Keyboard.readString();

        switch(sport){
            case "1":
                handball myhandball = new handball();
                myhandball.printMenu();break;
            case "2":
                football myfootball = new football();
                myfootball.printMenu();break;
            case "3":
                basketball mybasketball = new basketball();
                mybasketball.printMenu();break;
            case "4":
                wrestling mywrestling = new wrestling();
                mywrestling.printMenu();break;
            number = inputLine.nextInt();
            if (number < 0)
                System.out.println("Does not compute! Enter a positive number!");
            while (number < 0);
        }
    }
}

Ответы [ 3 ]

1 голос
/ 24 сентября 2019

Вы должны использовать сканер для ввода номера следующим образом:

import java.util.Scanner;
...

Scanner scan = new Scanner(System.in);
int number = scan.nextInt();

Редактировать для вашего примера:

...
switch(sport){
        case "1":
            handball myhandball = new handball();
            myhandball.printMenu();break;
        case "2":
            football myfootball = new football();
            myfootball.printMenu();break;
        case "3":
            basketball mybasketball = new basketball();
            mybasketball.printMenu();break;
        case "4":
            wrestling mywrestling = new wrestling();
            mywrestling.printMenu();break;
    }

  //put this out of switch statement
  Scanner scan = new Scanner(System.in);
  number = scan.nextInt();
        while (number < 0){
            System.out.println("Does not compute! Enter a positive number!");
            number = scan.nextInt();
        }
}
1 голос
/ 24 сентября 2019

Вы вызываете nextInt() для inputLine, который является примитивным типом int и поэтому не имеет никаких методов.Я предполагаю, что вы хотите получить nextInt() из пользовательского ввода вместо этого.Ниже приведены некоторые предложения по оптимизации вашего кода:

int number;
Scanner inputReader = new Scanner(System.in); // Use a scanner instead of a primitive int

System.out.println("Select Topic:");
System.out.println("1. Handball");
System.out.println("2. Football");
System.out.println("3. Basketball");
System.out.println("4. Wrestling");
String sport = inputReader.next();

switch(sport){
  case "1":
    Handball myhandball = new Handball(); // Classes should be capitalized
    myhandball.printMenu();
    break;
  case "2":
    Football myfootball = new Football();
    myfootball.printMenu();
    break;
  case "3":
    Basketball mybasketball = new Basketball();
    mybasketball.printMenu();
    break;
  case "4":
    Wrestling mywrestling = new Wrestling();
    mywrestling.printMenu();
    break;
}

// Move this part outside the switch structure
number = inputReader.nextInt(); // Get the input from the user using a Scanner
while (number < 0) { // Prevent infinite loop by retrieving new input from user inside the loop
  System.out.println("Does not compute! Enter a positive number!");
  number = inputReader.nextInt();
}
1 голос
/ 24 сентября 2019

Что такое разыменование?

Технически любая переменная, не являющаяся примитивным типом, содержит ссылку на объект, а не на сам объект.Когда вы используете «.»оператор для доступа к члену объекта, вы «разыменовываете» ссылку.

inputLine.nextInt();

inputLine - это примитивный тип int, с которым вы не можете вызывать методы, так как он этого не делаетудерживайте любую ссылку, чтобы вы получили ошибку int can't be derefrenced

Вы должны сделать что-то вроде.Используйте scanner класс, чтобы получить int вход

Scanner scanner = new Scanner(System.in);

Метод nextInt (radix) класса java.util.Scanner сканирует следующий токен ввода как Int

 scanner.nextInt();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...