Java 扫描仪仅读取文本文件的第一行
这是我的密码Java 扫描仪仅读取文本文件的第一行,java,file,for-loop,java.util.scanner,Java,File,For Loop,Java.util.scanner,这是我的密码 public static void main(String[] args) { File source = // Scanner s = null; int lineNumber =0; ArrayList<ArrayList<Integer>> tagsArray = new ArrayList<>(); try { s= new Scanner(s
public static void main(String[] args) {
File source = //
Scanner s = null;
int lineNumber =0;
ArrayList<ArrayList<Integer>> tagsArray = new ArrayList<>();
try {
s= new Scanner(source);
while (s.hasNext()) {
String[] cols = s.nextLine().split(" ");
for (int i = 0; i < cols.length; i++) {
if (cols[i].equals("1"))
tagsArray.get(i).add(lineNumber);
}
lineNumber++;
}
} catch (Exception e) {
// TODO: handle exception
}
}
publicstaticvoidmain(字符串[]args){
文件源=//
扫描器s=null;
int lineNumber=0;
ArrayList标记数组=新的ArrayList();
试一试{
s=新扫描仪(源);
而(s.hasNext()){
字符串[]cols=s.nextLine().split(“”);
for(int i=0;i
当我删除for语句时,它读取整个文本文件,但当我使用它时,它只读取第一行
为什么?我猜您会遇到一个
异常,但您会捕获并隐藏它,而不是处理它<这太糟糕了您至少应该打印异常的堆栈跟踪
您尝试访问:
tagsArray.get(i).add(lineNumber);
当tagsArray
为空时。在访问它之前,您需要实例化标记数组中的每个数组列表
。我猜您会得到一个异常
,但您会捕获并隐藏它,而不是处理它<这太糟糕了您至少应该打印异常的堆栈跟踪
您尝试访问:
tagsArray.get(i).add(lineNumber);
当tagsArray
为空时。在访问之前,您需要在tagsArray
中实例化每个ArrayList
。我认为使用BufferedReader比使用扫描仪读取文件要好。看一看,我会说使用BufferedReader比使用扫描仪读取文件要好。看一看,使用try-catch块不好吗?如何处理异常?尝试捕获块很好。但在挡块内什么也不做是不好的。至少使用e.printStackTrace()
此外,最好在每个if或for之后使用{和}。与其在catch块中使用“printf”,不如诚实地声明main
抛出IOException
。使用try-catch块不好吗?如何处理异常?尝试捕获块很好。但在挡块内什么也不做是不好的。至少使用e.printStackTrace()
此外,最好在每个if或for之后使用{和}。与其在catch块中使用“printf”,不如诚实地声明main
来抛出IOException
。