如何根据分配的分隔符使用分隔符开关进行扫描

时间:2014-07-16 05:11:34

标签: java java.util.scanner

我有一个文本文件,有类似的东西, 汤姆,凯莉,简: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;    

1 个答案:

答案 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));
    }

未经测试,请谨慎使用。您可以通过寻求过于优雅的解决方案来绊倒自己。只需获取逗号之间的所有字符串,然后进行任何额外的解析。