gpt4 book ai didi

java - 越界异常(字符串)

转载 作者:行者123 更新时间:2023-12-01 22:55:22 25 4
gpt4 key购买 nike

我正在为我的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com