Java 更改文本文件中的每个字母并打印

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();

我想更改文本文件中的每个字母。但我有一个错误:

线程“main”java.lang.StringIndexOutOfBoundsException中出现异常:字符串索引超出范围:0 位于java.lang.String.charAt(String.java:658) 位于Soru3.main(Soru3.java:31)

弦线

    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...