2015-11-17 101 views
-2

我是Java新手,有人可以幫我解決這個問題。Java新手,希望有人能幫我解決這個問題

的問題是這樣的:

目標:閱讀和寫作對象在一個文本文件中提供 汽車的信息,如下面給出的文件審查的概念。 文件名:honda.txt CRV-3 CV6787272 150000.00 20.0

MRV-1 MV9890202 180000.00 20.0

文娛CC9939390 82000.00 10.0

CRV-3 CV8393939 149000.00 20.0

步驟1創建一個名爲「Car」的類具有以下字段。這些字段對應於除最後一個之外的文本文件中的列。

a。車輛名稱:字符串

b。發動機號碼:字符串

c。車輛價格:雙倍

d。利潤:雙訴v。

e。總價:雙(總價=(車價)+(車輛價格*利潤/ 100)

第2步更新與方法Car類做以下

一個閱讀文本的內容。文件(honda.txt)

我。對於汽車類的一個實例,與計算出的總價格中創建的文件中的每一行。

二,創建寫入到另一個文件中的每個實例,「honda_showroom.txt 「

b。顯示內容「honda_showroom.txt」

i。方法ex:showCar(String eNumber)將引擎號作爲參數。並顯示特定汽車的所有信息,包括總價。 第3步創建一個主類來測試以上。

至今我所編寫的代碼:

汽車類代碼(寫在BlueJ的):

import java.io.Serializable; 

public class Car { 

private String vehicleName; 
private String engineNumber; 
private double vehiclePrice; 
private double Profit; 
private double totalPrice; 
totalPrice = (vehiclePrice) + ((vehiclePrice * Profit)/100); 



public double getProfit() { 
    return Profit; 
} 

public void setProfit(double Profit) { 
    this.Profit = Profit; 
} 

public String getEngineNumber() { 
    return engineNumber; 
} 

public void setEngineNumber(String engineNumber) { 
    this.engineNumber = engineNumber; 
} 

public double getTotalPrice() { 
    return totalPrice; 
} 

public void setTotalPrice(double totalPrice) { 
    this.totalPrice = totalPrice; 
} 

public String getVehicleName() { 
    return vehicleName; 
} 

public void setVehicleName(String vehicleName) { 
    this.vehicleName = vehicleName; 
} 

public double getVehiclePrice() { 
    return vehiclePrice; 
} 

public void setVehiclePrice(double vehiclePrice) { 
    this.vehiclePrice = vehiclePrice; 
} 
} 

輸出或顯示類:

import java.io.Serializable; 
import java.io.FileNotFoundException; 
import java.io.IOException; 
import java.util.Scanner; 
import java.util.ArrayList; 
import java.io.FileReader; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.ObjectInputStream; 
public class Display { 

private String fileName; 

public Display(String fName) { 
    // this.fileName = "honda_showroom"; 
    fileName = fName; 
    // this.fileName = fileName; 
} 

public String getFileName() { 
    return fileName; 
} 

public void setFileName(String fileName) { 
    this.fileName = fileName; 
} 

public void showCar(String eNumber) throws FileNotFoundException,  IOException, ClassNotFoundException { 

    FileInputStream fis = new FileInputStream(new File(this.fileName)); 
    ObjectInputStream ois = new ObjectInputStream(fis); 
    ArrayList<Car> cList = (ArrayList<Car>) ois.readObject(); 


    while (ois.readObject() != null) { 

     cList = new ArrayList<Car>(); 
     int searchListLength = cList.size(); 
     for (int i = 0; i < searchListLength; i++) { 
      if (cList.get(i).equals(eNumber)) { 
       cList.toString(); 
      } 

     } 
    } 
} 
} 

提前致謝!請記住,我是一個初學者也從互聯網上收集了一些代碼。

+2

那麼...很多文字,很多代碼。但是你有什麼問題嗎? – Seelenvirtuose

+1

[爲什麼「有人可以幫助我?」不是真正的問題?](http://meta.stackoverflow.com/questions/284236/why-is-can-someone-help-me-not-an-actual-問題) – tnw

回答

-1

首先,我期望看到一些質量較低的代碼。

我認爲第一個問題是:

private double totalPrice; 
totalPrice = (vehiclePrice) + ((vehiclePrice * Profit)/100); 

賦值語句不能編譯。在class { ... }之下的那個級別,你只能聲明字段,方法,構造函數(和初始值設定項)。

你可以把它放在構造函數或方法:

public void updateTotalPrice() { 
    totalPrice = vehiclePrice + vehiclePrice * Profit/100; 
} 

現在totalPrice完全取決於公式的變量的實際電流值。所以也許它應該是一種方法,而不是總是計算它的價值。

第二個問題是文件I/O。當然,應該使用已經學到的手段。所以對我來說有點困難,可能你應該自己調查一下。

我會用閱讀器已經閱讀文本

Path path = Paths.get(fileName); 
BufferedReader in = Files.new BufferedReader(path, StandardCharsets.UTF_8); 
... 
in.close(); 

或者

List<String> lines = Files.readAllLines(path, StandardCharsets.UTF_8); 

類似Files可以寫文字。

作爲二進制數據寫就像你一樣,不能被檢查爲簡單 - 太多的魔法。


評論後

有些課程用掃描儀,而不是一個簡單的(BufferedReader類);可以讀取類型值。 BufferedReader會走,如下所示:

for (;;) { 
    String line = in.readLine(); // null when at end; no newline chars 
    if (line == null) { 
     break; 
    } 
    String[] fields = line.split(" ", 4); 
    if (fields.length == 4) { 
     Car car = new Car(); 
     car.setVehicleName(fields[0]); 
     ... 
     car.setProfit(Double.parseDouble(fields[3]); 
     cList.add(car); 
    } 
} 
+0

你能解釋在哪裏包括讀者? – Dahacker305

+0

閱讀閱讀汽車的文本文件。如果你的意思是如何工作的話;我添加了可用的工具:'BufferedReader.readLine,String.split,Double.parseDouble'。如果您瞭解了掃描儀,請使用該掃描儀。 –

相關問題