首页 > 解决方案 > 如何使用扫描仪和 next() 但不前进

问题描述

我正在尝试使用带有内置 next() 方法的扫描仪,问题是我想以这种方式存储两个不同的值,我的代码可能更容易理解:

public Sokoban8() throws Exception {
    file = new File("C:/Users/joaki/Desktop/sokoban/readin3.txt");
    sc = new Scanner(file);
    sc.reset();
    list = new ArrayList<Character>();
    sc.useDelimiter("s*");
    while(sc.hasNext()) {
        char c = sc.next().charAt(0);
        //String line = sc.nextLine();

        list.add(c);
        lines++;
        //if (maxChar < line.length()) {
            //maxChar = line.length();
        }
    }
    sc.close();
    for (Object item : list) {
        System.out.println(item);
    }
}

问题是当我删除 // 时,我的代码将向前迭代(两次),因此我不会得到所有的值,有没有办法让我绕过这个?

标签: java

解决方案


您需要在一次迭代期间存储一行和一个字符。您可以先存储线路

String line = sc.nextLine();

然后像这样存储它的第一个字符

char c = line.charAt(0);

推荐阅读