Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java charAt()调用中的StringIndexOutOfBoundsException_Java_File_Char_Indexoutofboundsexception - Fatal编程技术网

Java charAt()调用中的StringIndexOutOfBoundsException

Java charAt()调用中的StringIndexOutOfBoundsException,java,file,char,indexoutofboundsexception,Java,File,Char,Indexoutofboundsexception,我是新的编码,我正试图使一个程序,匹配两个文本文件。对于第一行,我匹配第一个字符,第二行匹配两个字符,依此类推,直到其中一个文件结束 问题就在这里。如果该行没有足够的字符,您只能比较出现的字符,如果两行99都有abc,则将其视为匹配 如果不抛出一个错误,我似乎无法满足这个要求,因为如果字符数小于行数,charAt读取的是null。谢谢你的帮助 代码: 在超过行的最后一个字母末尾调用char之前,需要检查行1和行2的长度与i变量的关系 类似于ifline1.length

我是新的编码,我正试图使一个程序,匹配两个文本文件。对于第一行,我匹配第一个字符,第二行匹配两个字符,依此类推,直到其中一个文件结束

问题就在这里。如果该行没有足够的字符,您只能比较出现的字符,如果两行99都有abc,则将其视为匹配

如果不抛出一个错误,我似乎无法满足这个要求,因为如果字符数小于行数,charAt读取的是null。谢谢你的帮助

代码:


在超过行的最后一个字母末尾调用char之前,需要检查行1和行2的长度与i变量的关系

类似于ifline1.length

首先检查两行的长度是否相等,如下所示,并将变量work更改为布尔值而不是字符串。它有助于提高性能,因为boolean需要1个字节和字符串

if (line1.length() > line2.length()) {
    work = false;
} else if (line1.length() < line2.length()) {
    work = false;
} else if (line1.charAt(i) != line2.charAt(i)) {
    work = false;
} else {
    work = true;
}
或:

然后

但是如果您真的想/需要使用work变量作为字符串,那么不要将其与==进行比较,而是与work.equals或.equalswork进行比较。第二个变量可以防止NullPointerException

阅读更多关于,以及。大约


此外,如果在任何位置,两行在任何字母处不匹配,您可能希望中断或继续循环。

不要使用ifline1.charAti!=line2.charAti,使用ifline1.charAti.equalsline2.charAti@Sekula1991 It primitive types.so==是fine您必须检查charAt的结果是否为null,然后进行相应的处理
if (line1.length() > line2.length()) {
    work = false;
} else if (line1.length() < line2.length()) {
    work = false;
} else if (line1.charAt(i) != line2.charAt(i)) {
    work = false;
} else {
    work = true;
}
if (line1.length() != line2.length()) {
    work = false;
} else {
    work = true;
}
if (line1.length() == line2.length()) {
    work = true;
} else {
    work = false;
}
if(work) {//This is the same as if (work == true)
    System.out.println("Line # " + line + ": Matching " + line + " character/s true " + "**" + line1 + "**" + " and " + "**" + line1 + "**");
} else {
    System.out.println("Line # " + line + ": Matching " + line + " character/s false " + "**" + line1 + "**" + " and " + "**" + line2 + "**");
}