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);
}
}
}
如果你想看到它们的代码,我还创建了另外三个名为GeometricObject,Circle和Recetangle的类。上面的信息表明了图形的类型以及半径,长度,宽度,颜色和填充的给定参数。
答案 0 :(得分:0)
正如microsby0所说,你可能会将原始单词拆分成数组。我不相信有一种简单的方法可以直接将原始单词转换为类名((Circle)&#34; Circle&#34;不起作用,我认为这让你感到困惑)。您应该将每个数组读入某些参数并进行处理:
/*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'来处理不同的输入。
答案 1 :(得分:0)
使用PSUEDOCODE:
我可能不会使用扫描仪但
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"))
然后使用&#34;,&#34;在buf [i]上进行另一次拆分进入另一个数组,如String arr []
arr = buf[i].split(",");
然后是Circle Class中第二个数组的元素,如
Circle circle = new Circle(arr[0],arr[1],etc
然后添加到数组
Object result[] = new Object[100];
result[0] = circle;