java - 如何使用扫描仪和 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);
}
}
问题是当我删除 // 时,我的代码将向前迭代(两次),因此我不会得到所有的值,有没有办法让我绕过这个?
解决方案
您需要在一次迭代期间存储一行和一个字符。您可以先存储线路
String line = sc.nextLine();
然后像这样存储它的第一个字符
char c = line.charAt(0);
推荐阅读
- pandas - 数据框中每列和每行的百分位数
- c++ - 几乎所有形式的字符串比较都不适用于 C++ 11
- javafx - 在另一个场景中从 TextField 输入后 Javafx 标签未更新
- python - 找不到 IndentationError:意外缩进错误?
- c# - 二维数组的最大值最小值
- c# - lua错误结束c#函数和父函数执行
- python-3.x - 在 Python 中有条件地不传递命名参数
- npm - 更新 yarn.lock 或 package.lock 文件的最佳频率是多少?
- azure - @Query 在 Spring Boot (JPA) + Azure Cosmos db 中不起作用
- javascript - 调整画布大小的后果