【问题标题】:array of vehicles车辆阵列
【发布时间】:2010-10-15 01:04:02
【问题描述】:

有没有人可以帮助我解决我花了几个小时排除故障的 java 程序? 我将文件读入字符串数组没有问题,但我似乎不知道如何使用 switch 或 if 语句将每一行存储在对象数组中。

使用 main 编写一个应用程序,它读取文件(从命令行)并用 new vehicle (params)、new car (params)、new American car (params) new foreign car 填充类型为 vehicle[] 的数组(params) 、新卡车 (params)、新自行车 (params) 等,具体取决于标识每条记录的第一行。 数据样本:

车辆
eRob
罗伯的房子
(987) 654-3210
Frob@rob.com

卡车
道吉
道格的房子
(123) 456-7890
hdoug@doug.com
30
61234.56
2003 年 8 月 10 日

自行车
汤姆
汤姆的房子
(246) 810-1214
Gtom@tom.com
7

如果您发现我的代码有什么问题,请指出:

public static void main( String[] args) throws Exception

{ 

  int traceOfArray = 100;

  Vehicle[] vehicle = new Vehicle[traceOfArray];

  File file = null;

  file = new File(args[0]);

  FileReader Fr = new FileReader(file); //read file.

  BufferedReader Br = new BufferedReader(Fr);

  String read = Br.readLine();

  try
  {

      while (read != null) 
      {

      char x = read.charAt(0);

      if(x=='v')

           vehicle[0] = new Vehicle(Br.readLine(), Br.readLine(), Br.readLine(), Br.readLine());

      else if(x=='c')

           vehicle[1] = new Car(Br.readLine(), Br.readLine(), Br.readLine(), Br.readLine(), Br.readLine(), Br.readLine());

     ...

【问题讨论】:

  • 请通过突出显示代码块并单击带有“1”和“0”的按钮来重新格式化您的代码。
  • 听起来像是功课。如果是这样,你可以这样标记它吗?
  • 你的代码还能编译吗?一个完整的例子会更容易说明发生了什么
  • 查看ArrayList.add:download.oracle.com/javase/1.4.2/docs/api/java/util/…, java.lang.Object)
  • 到目前为止我已经写完了所有东西,但这部分是我遇到问题的地方。我对他也想让我做的事情感到困惑......

标签: java arrays


【解决方案1】:

有一件事是 ArrayLists 与数组不同。

arrayList(i++) = new vehicle (Br.readLine(), Br.readLine(), Br.readLine(),  Br.readLine());

应该是

arrayList.add(new vehicle (Br.readLine(), Br.readLine(), Br.readLine(),  Br.readLine()));

如果arrayList真的是vehicle[],那么你需要使用方括号,而不是括号:

arrayList[i++] = new vehicle (Br.readLine(), Br.readLine(), Br.readLine(),  Br.readLine());

此外,习惯上类名以大写字母开头(Vehicle,而不是vehicle

【讨论】:

  • 好的,这些都不起作用。我以前从未使用过arrayList-s。我应该使用 if 语句。应该没有这个 switch 语句那么复杂
  • “不工作”相当含糊。哪个部分不工作?您的 arrayList 变量是如何定义的?是ArrayList<vehicle> arrayList = new ArrayList<vehicle>()vehicle[] arrayList = new vehicle[10],还是别的什么?
【解决方案2】:

您也可以将 BR 对象作为参数传递给该类,并让它计算出它需要多少行:

例如

case 'v':
    new vehicle (Br)

...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-06
    • 2021-11-05
    • 2018-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多