【问题标题】:How to use input to create an object如何使用输入创建对象
【发布时间】:2019-09-29 03:44:36
【问题描述】:

我有一个 CarModel 类,它包含三个字段:namefuelEconomygasTankSize

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 出现时结束程序输入?

【问题讨论】:

  • 请分享汽车类。
  • 那么,您到底想问什么?您需要知道如何阅读用户输入吗?如何调用构造函数?

标签: java object arraylist dynamic-arrays


【解决方案1】:

在 main 方法中,尝试做这样的事情(使用try with resources):

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!
   }    
}

【讨论】:

    【解决方案2】:

    我会使用String.split 方法。您传递一个分隔符,在您的情况下是一个空格字符,然后该方法根据您提供的分隔符将字符串切成小块。将输入输入您的程序取决于输入的来源,无论是通过文件、终端还是其他来源。

    读完一行输入后,致电String[] values = line.split(" ")

    同样,如何读取输入取决于输入的来源,您尚未指定。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-21
      • 1970-01-01
      • 2021-11-18
      • 2017-09-11
      • 2019-09-05
      • 2021-07-01
      • 2018-11-04
      • 1970-01-01
      相关资源
      最近更新 更多