作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
以下代码应从 .dat 文件中读取 5 个字符串,然后打印每个字符串中的每个单独字符。
File file = new File("tictactoe.dat");
Scanner scan = new Scanner(file);
String str = "";
int x;
for ( x = 0; x < numGames; x++) {
str = scan.nextLine();
for (int i = 0; i < str.length(); i++) {
out.println(str.charAt(i));
}
}
但是程序抛出了StringIndexOutOfBoundsException
。 扫描仪
没有任何问题,因为测试表明它可以很好地拾取我文件中的每一行。但是,当尝试获取然后打印每个字符串中的某个字符时,程序崩溃了。
奇怪的是,在循环之外 charAt()
工作时没有错误。
为什么在循环内调用方法会导致程序崩溃?
更新:我在复制我正在使用的代码时犯了一些荒谬的错误。请参阅上面更新的代码。另外,程序由于 StringIndexOutOfBoundsException
而“崩溃”,而我没有捕获到该异常。
最佳答案
当您打印第一行的第一个字母和第二行的第二个字母等时,我预计错误是 StringIndexOutOfBoundsException
。因为您不检查是否存在这样的情况字母存在,到了某个点,线就不再那么长了。
如果这不是我会的原因
关于Java charAt() 方法在 For 循环中崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12605978/
我是一名优秀的程序员,十分优秀!