Java 更改文本文件中的每个字母并打印
我想更改文本文件中的每个字母。但我有一个错误: 线程“main”java.lang.StringIndexOutOfBoundsException中出现异常:字符串索引超出范围:0 位于java.lang.String.charAt(String.java:658) 位于Soru3.main(Soru3.java:31) 弦线Java 更改文本文件中的每个字母并打印,java,io,java-io,Java,Io,Java Io,我想更改文本文件中的每个字母。但我有一个错误: 线程“main”java.lang.StringIndexOutOfBoundsException中出现异常:字符串索引超出范围:0 位于java.lang.String.charAt(String.java:658) 位于Soru3.main(Soru3.java:31) 弦线 while (inputStream.hasNextLine()) { line = inputStream.nextLine();
while (inputStream.hasNextLine()) {
line = inputStream.nextLine();
String[] harfler = line.split("");
String satir = "";
char[] ary = new char[harfler.length];
for (int i = 0; i < ary.length; i++) {
ary[i]=harfler[i].charAt(0);
}
for (int i = 0; i < line.length(); i++) {
if ( ( ((int) ary[i] <= 77) && ((int) ary[i] >= 65))
&& (((int) ary[i] >= 97) && ((int)ary[i] <= 109)))
ary[i] = (char) ( (int)(ary[i]) + 13) ;
else if ((((int) ary[i] > 77) && ((int) ary[i] <= 90))
&& (((int) ary[i] > 109) && ((int) ary[i] <= 122)))
ary[i] = (char) ((int) ary[i] - 11);
else {
ary[i]=ary[i];
}
System.out.println(satir + line);
}
}
inputStream.close();
while(inputStream.hasNextLine()){
line=inputStream.nextLine();
字符串[]harfler=line.split(“”);
字符串satir=“”;
char[]ari=新字符[harfler.length];
for(int i=0;i &&(((int)ary[i]>=97)&&&((int)ary[i]77)&&((int)ary[i]109)&&((int)ary[i]当文本文件中有临时行时,会发生这种情况。为了避免这种情况,需要将循环从以下位置更改:
for (int i = 0; i < ary.length; i++) {
for(int i=0;i
到
for(int i=0;i
当您有一个空行时,您的行中不会有任何字符,并且我们知道字符串是由字符数组备份的。因此,当行为空时,您的字符数组中没有任何元素,您正试图使用ari[i]=harfler[i].charAt(0)访问第0个元素;
在for循环中,因此您会得到一个异常。由于'ary'有harfler.length元素,您应该将主循环从以下位置更改为:
for (int i = 0; i < line.length(); i++) {
for(int i=0;i
到
for(int i=0;i
您收到的错误是源文件中的空行导致的。我看到您没有直接解决问题,而是简单地以冗长而低效的方式将行分解为字符数组
为什么不试试:
while (inputStream.hasNextLine()){
line = inputStream.nextLine();
char[] ary = line.toCharArray();
for(int i = 0; i < ary.length; i++){
// Rest of code...
while(inputStream.hasNextLine()){
line=inputStream.nextLine();
char[]ari=line.toCharArray();
for(int i=0;i
如果有可能行是null
您也应该首先检查该行。harfler[i].charAt(0);这里您将得到异常。.在使用该行之前,最好先检查null!=harfler[i]或“.euals(harfler[i])。
for (int i = 0; i < ary.length; i++) {
while (inputStream.hasNextLine()){
line = inputStream.nextLine();
char[] ary = line.toCharArray();
for(int i = 0; i < ary.length; i++){
// Rest of code...