Размещение переменных объекта в сканере - PullRequest
0 голосов
/ 07 апреля 2020

Я совершенно новичок в java, поэтому любые отзывы или помощь будут с благодарностью. Я пытаюсь создать программу, которая запрашивает у пользователя набор входных данных (таких как имя, регистрация, цвет, количество поездок и показания одометра) для класса Car. Я создал класс автомобиля, создал объект этого класса с именем carSample и присвоил ему те же имена переменных из моего основного метода, где я использую сканер для запроса имени, регистрации и т. Д. c ...

Однако это не работает, и я получаю сообщение об ошибке:

TestCar. java: 8: error: ';' Ожидаемая строка carSample.name = input.nextLine ();

Вот мой код:

public static void main(String[] args){

    Scanner input = new Scanner(System.in);

    System.out.print("Input name: ");

    String carSample.name = input.nextLine();

    System.out.print("Input registration: ");

    String carSample.registration = input.nextLine();

    System.out.print("Input colour: ");

    String carSample.colour = input.nextLine();

    System.out.print("Input trips: ");

    int carSample.numberOfTrips = input.nextInt();

    for (int i = 0; i < numberOfTrips; i++) {
        System.out.print("Odometer reading " + (i + 1) + ": ");
        int odometerReading = input.nextInt();
    }

    car carSample = new car(); // Creates object of class Car
}

class car {
    String name;
    String registration;
    String colour;
    int numberOfTrips;
    double odometerReading;
}

Любая помощь будет принята с благодарностью, спасибо!

Ответы [ 4 ]

1 голос
/ 07 апреля 2020

Я переместил numberOfTrips и одометр в класс CarTripHistory. Проверьте это:

public static void main(String[] args){
    Car carSample = new Car();

    Scanner input = new Scanner(System.in);

    System.out.print("Input name: ");

    carSample.name = input.nextLine();

    System.out.print("Input registration: ");

    carSample.registration = input.nextLine();

    System.out.print("Input colour: ");

    carSample.colour = input.nextLine();

    CarTripHistory carTripHistory = new CarTripHistory();

    System.out.print("Input trips: ");

    carTripHistory.numberOfTrips = input.nextInt();
    carTripHistory.odometerReading = new double[carTripHistory.numberOfTrips];

    for (int i = 0; i < carTripHistory.numberOfTrips; i++) {
        System.out.print("Odometer reading " + (i + 1) + ": ");
        carTripHistory.odometerReading[i] = input.nextInt();
    }

    carSample.carTripHistory = carTripHistory;

}

class Car {
    String name;
    String registration;
    String colour;
    CarTripHistory carTripHistory;
}

class CarTripHistory{
    int numberOfTrips;
    double[] odometerReading;
}
1 голос
/ 07 апреля 2020
`import java.util.*;

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

    Scanner input = new Scanner(System.in);
        car carSample = new car(); // Creates object of class Car
    System.out.print("Input name: ");


    carSample.name = input.nextLine();

    System.out.print("Input registration: ");

     carSample.registration = input.nextLine();

    System.out.print("Input colour: ");

 carSample.colour = input.nextLine();

    System.out.print("Input trips: ");

 carSample.numberOfTrips = input.nextInt();

    for (int i = 0; i < carSample.numberOfTrips; i++) {
        System.out.print("Odometer reading " + (i + 1) + ": ");
        int odometerReading = input.nextInt();
    }


}

}
class car {
    String name;
    String registration;
    String colour;
    int numberOfTrips;
    double odometerReading;
}`

Попробуйте это ... это должно работать ...

1 голос
/ 07 апреля 2020
String carSample.name = input.nextLine();
  1. carSample объявлен в классе автомобилей. Когда вы присваиваете значение уже объявленной переменной, вам не нужно указывать тип. (он прерывается, когда вы это делаете)
  2. Когда вы присваиваете значение переменной в объекте, объект должен быть создан первым. Переместите созданный вами автомобильный объект в начало программы.
...

Car carSample = new Car(); // Creates object of class Car
...
carSample.name = input.nextLine();
...
carSample.registration = input.nextLine();
...
carSample.numberOfTrips = input.nextLine();
...
carSample.name = input.nextLine();

Наконец, когда вы используете numberOfTrips в for для l oop, вам нужно получить к нему доступ с помощью car.numberofTrips.

0 голосов
/ 07 апреля 2020

Вам нужно создать экземпляр объекта, представьте, что у вас есть машины a и b . И вы хотите, чтобы они имели разные свойства, каждый раз, когда вы вызываете car a = new car(), вы создаете новую машину со всеми атрибутами null. И тогда вы можете использовать

 a.name = input.nextLine();

Таким образом, вы присваиваете автомобилю значение имени атрибута и так далее ...

Хотя это не лучший способ, потому что Вы не должны использовать атрибуты непосредственно из класса автомобиля в другом классе. Вместо этого вы должны создать несколько конструкторов и установить и получить методы.

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