Java 什么';我的线圈怎么了?不断地得到无接触的例外
在Java 什么';我的线圈怎么了?不断地得到无接触的例外,java,arrays,loops,Java,Arrays,Loops,在maze[r][c]=scan.next()行中,我一直得到一个NoTouchElement异常。我如何解决这个问题 try { Scanner scan = new Scanner(f); String infoLine = scan.nextLine(); int rows=0; int columns=0; for(int i = 0; i<infoLine.length();i++){
maze[r][c]=scan.next()行中,我一直得到一个NoTouchElement异常代码>。我如何解决这个问题
try {
Scanner scan = new Scanner(f);
String infoLine = scan.nextLine();
int rows=0;
int columns=0;
for(int i = 0; i<infoLine.length();i++){
if(Character.isDigit(infoLine.charAt(i))==true){
rows = (int)infoLine.charAt(i);
columns = (int)infoLine.charAt(i+1);
break;
}
}
String [][] maze = new String[rows][columns];
int r = 0;
while(scan.hasNextLine()==true && r<rows){
for(int c = 0; c<columns;c++){
maze[r][c]=scan.next();
}
r++;
}
return maze;
} catch (FileNotFoundException e) {
e.printStackTrace();
}
试试看{
扫描仪扫描=新扫描仪(f);
字符串infoLine=scan.nextLine();
int行=0;
int列=0;
对于(int i=0;i请查看代码的这一部分:
while(scan.hasNextLine()==true && r<rows){ // 1
for(int c = 0; c<columns;c++){ // 2
maze[r][c]=scan.next(); // 3
} // 4
r++; // 5
} // 6
while(scan.hasNextLine()==true&&r查看这部分代码:
while(scan.hasNextLine()==true && r<rows){ // 1
for(int c = 0; c<columns;c++){ // 2
maze[r][c]=scan.next(); // 3
} // 4
r++; // 5
} // 6
while(scan.hasNextLine()==true&&r将布尔值与true进行比较与仅使用布尔值本身相同。也就是说,只要有“x==true”,就可以简单地使用“x”。将布尔值与true进行比较与仅使用布尔值本身相同。也就是说,只要有“x==true”,就可以简单地使用“x”。好的,您的代码中有一个期望,即您的扫描有足够的条目覆盖所有列。您的数据违反了该期望。您可以更改内部for
循环,以匹配外部while
循环的格式-并包括一个hasNextLine()检查-但这会在一条直线的中间退出。如果你同意的话,那可能是你的解决方案。如果不是,你需要在更高的层次上重新考虑这个问题。我相信你对行和列的判断是错误的。<代码>行=(int)INFLINE。;
将获得int的ascii值,但您真正想要的似乎是由char表示的整数。行=Character.digit(infoLine.charAt(i),10)
可能是最好的方法。数字参数中的10是怎么做的?此外,该循环会导致列最大化,并且除了最后一列外,不允许任何列填充。我忘记了为每行重新初始化c。已修复。您的代码中有一个期望,即您的扫描有足够的条目覆盖所有列。您的数据i达到预期效果。您可以更改内部for
循环,以匹配外部while
循环的格式,并包括一个hasNextLine()检查-但这会在一条直线的中间退出。如果你同意的话,那可能是你的解决方案。如果不是,你需要在更高的层次上重新考虑这个问题。我相信你对行和列的判断是错误的。<代码>行=(int)INFLINE。;
将获得int的ascii值,但您真正想要的似乎是由char表示的整数。行=Character.digit(infoLine.charAt(i),10)
可能是最好的方法。数字参数中的10有什么作用?此外,该循环会导致列最大化,并且不允许除最后一列之外的任何列填充。我忘记为每行重新初始化c。已修复。