我正在为我的 Java 类开发一个项目,但似乎不知道如何解决这个问题。根据异常,我知道它位于字符串索引长度内,但是,我似乎无法纠正该问题。这是我第一次学习Java,所以请原谅我的新手问题。
有关当前任务的一些背景:我正在尝试导入 ascii art 文件 (.txt),将其转换为 csv 格式,然后输出到指定文件。方法签名由讲师提供,无法篡改。此代码可以编译,但在运行时,会引发引用我对 imageToNumRep
的调用的越界异常。
这是我针对此特定部分的代码:
import java.io.*;
import java.util.*;
public class Convert{
public static void main(String[] args) throws FileNotFoundException {
File input=new File("Flag.txt");
File output=new File("result.txt");
imageToNumRep(input, output);
}
public static void imageToNumRep(File input, File output) throws FileNotFoundException {
Scanner in=new Scanner(input);
PrintStream out= new PrintStream(output);
int count=0;
while(in.hasNextLine()) {
count++;
String s=in.nextLine();
out.print("(");
for(int x=0; x < s.length()-1; x++) {
int num=1;
while(s.charAt(x)==s.charAt(x+1)) {
num++;
}
out.print(num+s.charAt(x-1));
num=1;
if(s.charAt(x) != s.charAt(x-1) && s.charAt(x) != s.charAt(x+1)) {
out.print("1,"+s.charAt(x));
} else {
num=1;
}
}
out.print(")");
out.println();
}
}
}
最佳答案
您正在从索引 0
循环至s.length()-2
(由于 s.length()-1
运算符, <
不会被包含在内),这将避免在调用 s.charAt(x+1)
时出现异常。 ,但是当你这样做时
s.charAt(x-1)
和x = 0
,那么你会得到一个异常,因为它会像 s.charAt(-1)
,这是无效的。
你能做什么?
您可以从1
开始迭代:
for(int x = 1; x < s.length() - 1; x++)
关于java - 越界异常(字符串),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24150438/