Как использовать ввод для создания объекта - PullRequest
0 голосов
/ 29 сентября 2019

У меня есть класс CarModel, который имеет три поля: name, fuelEconomy и gasTankSize.

class CarModel {
    private String name;
    private double fuelEconomy;
    private double gasTankSize;

    CarModel(String name, double fuelEconomy, double gasTankSize) {
        this.name = name;
        this.fuelEconomy = fuelEconomy;
        this.gasTankSize = gasTankSize;
    }

    String getName() {
        return name;
    }

    double getFuelEconomy() {
        return fuelEconomy;
    }

    double getGasTankSize() {
        return gasTankSize;
    }
}

С учетом ввода в виде строки текста, разделенной новой строкой:

MODEL Camry 6.5 58 
MODEL Civic 7.5 52
FINISH

Как создать новый объект каждый раз, когда слово MODEL находится на входе, сохранить модель в массиве, использовать следующие слова в качестве данных для этих полей и завершить программу, когда FINISH находится на входе?

Ответы [ 2 ]

0 голосов
/ 29 сентября 2019

Я бы использовал метод String.split.Вы передаете разделитель, в вашем случае символ пробела, а затем метод разбивает строку на части в зависимости от предоставленного вами разделителя.Получение ввода в вашу программу зависит от того, откуда он будет поступать, по файлу, терминалу или какому-либо другому источнику.

После того, как вы прочли строку ввода, позвоните String[] values = line.split(" ")

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

0 голосов
/ 29 сентября 2019

Внутри основного метода попробуйте сделать что-то вроде этого (Используя попробуйте с ресурсами ):

public static void main(String args[]){
String line;
List<CarModel> cars = new ArrayList<>();
  try(Scanner sc = new Scanner(System.in)){
     while(sc.hasNextLine()){
     line = sc.nextLine();
     String[] arr = line.split(" ");
     if(arr[0].equalsIgnoreCase("Model")){
        cars.add(new CarModel(arr[0], Double.parseDouble(arr[1]), Double.parseDouble(arr[2])));
      }else if(arr[0].equalsIgnoreCase("Finish"){
        break;
      }
    }
   }catch(ArrayIndexOutOfBoundsException ex){
     // do something here! 
   }catch(Exception ex){
     // do something here as well!
   }    
}
...