2014-10-07 57 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; 
相关问题