我有一个文本文件,有类似的东西, 汤姆,凯莉,简:0,马特:2,乔恩
所以在这个地方//如果(******)我想使用那里为Tom,Kelly,Jon的list.add,我想在文件中使用扫描的int代替0,简,马特。我不确定Delimiter是否是正确的选择,我知道在那里使用这两种扫描仪也不正确。请指出我正确的方向。
public static Picker fromFile() throws FileNotFoundException
{
ArrayList<Student> list = new ArrayList<Student>();
Scanner diskScanner = new Scanner(new File("Names.txt"));
diskScanner.useDelimiter(", |:");
while (diskScanner.hasNext()) {
//if(******)
list.add(new Student(0, diskScanner.next()));// or list.add(new Student(diskScanner.next(), diskScanner.next()))
}
list = Order.arrange(list);
Picker pick = new Picker(list);
return pick;
答案 0 :(得分:0)
就这样做:
Scanner diskScanner = new Scanner(new File("Names.txt"));
diskScanner.useDelimiter(",");
while (diskScanner.hasNext())
{
String n = diskScanner.next();
if(n.contains(":"))
{
int i = n.indexOf(":");
list.add(new Student(Integer.parseInt(n.substring(i+1)), n.substring(0,i)));
}
else
list.add(new Student(0, n));
}
未经测试,请谨慎使用。您可以通过寻求过于优雅的解决方案来绊倒自己。只需获取逗号之间的所有字符串,然后进行任何额外的解析。