2014-10-07 90 views
0

GeometricObjectsData.txt如何從文件中讀取數據並創建對象並將其分配給數組?

「CIRCLE」, 1, 「blue」, true 
「RECTANGLE」, 1, 2, 「blue」, true 
「RECTANGLE」, 10, 2, 「red」, true 
「CIRCLE」, 2, 「green」 
「RECTANGLE」 
「CIRCLE」 

司機:我在如何將上述信息傳送到一個對象,然後將其分配給數組有點混亂。

import java.io.File; 
import java.io.FileNotFoundException; 
import java.util.ArrayList; 
import java.util.Scanner; 

public class Driver { 
public static void main(String[] args) throws FileNotFoundException { 
    Scanner input = new Scanner(new File("C:/Users/Charles/Desktop/GeometricObjectsData.txt")); 

    ArrayList<GeometricObject> list = new ArrayList<GeometricObject>(); 

    while (input.hasNext()) { 
     String line = input.nextLine(); 
     System.out.println(line); 
    } 
    } 
} 

如果您想查看它們的代碼,我還創建了3個其他類,稱爲GeometricObject,Circle和Recetangle。上面的信息表明圖形的類型以及給定的半徑,長度,寬度,顏色和填充參數。

+1

我們將最有可能需要的其他類es,但可以在讀入的每一行上嘗試使用line.split(「,」)來獲取所需值的數組。然後用這些值創建對象。你是否有任何錯誤,問題?請提供有關您遇到的問題的更多信息 – Michael 2014-10-07 17:05:40

回答

0

正如microsby0所說,您可能可以將原始單詞拆分爲數組。我不相信有一種簡單的方法可以直接將原始單詞轉換爲類名稱((Circle)「Circle」不起作用,並且我認爲這會讓您感到困惑)。請仔細閱讀每個數組的某些參數並加以處理:

/*somewhere else in code:*/ shapeArray[i] = convert(array[0],array[1],...)//where i is some incremental value in a loop

Shape convert(String s, int someNumber,...) { 
    Shape c; 
    switch(s) { 
    case "Circle": 
     c = new Circle(...); 
    break; 
    case "Square" 
     ... 
    break; 
    //and so on 
    } 

//more application logic 
return c; 
} 

轉換可以返回的形狀可以分配給圖形陣列。您始終可以使用function(method) 'overloading'來處理不同的輸入。

0

僞代碼用於:

我可能不會使用掃描儀,但

BufferedReader buffer = new BufferedReader(new FileReader(file)); 

,那麼你會

//這應該每行的文本分成數組

String buf[]= null; 
    while ((line = buffer.readLine()) != null) { 

     resultLine += line + ";"; 
     buf = resultLine.split(";"); 

    } 
    buffer.close(); 

然後通過陣列buf循環並做

if(buf[i].startsWith("C")) 

然後執行[I]使用上的buf另一個分裂「」到另一個數組像字符串ARR []

arr = buf[i].split(","); 

然後但第二陣列的在圈內類等

元素
Circle circle = new Circle(arr[0],arr[1],etc 

然後添加到一個數組

Object result[] = new Object[100]; 
result[0] = circle; 
相關問題