JAVA比较两个字符串是否相等上的一些问题

File file = new File(path);
try {
InputStreamReader read = new InputStreamReader(new FileInputStream(file));
BufferedReader bufferedReader = new BufferedReader(read);
String lineTXT = null;
String[] s3 = null;
while ((lineTXT = bufferedReader.readLine()) != null) {
System.out.println(lineTXT);
s3 = lineTXT.split(",");
}
for (int i = 0; i < s3.length; i++) {
int count = i + 1;
if (s3[i] != s2[i]) {
{
System.out.println("第" + count + "个位置的值不同,值为" + s3[i]);
}
}
}
read.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

读取了文件的内容放在s3数组里里面然我我定义了一个 String[] s2 = {"124453", "258", "98", "123"};放我比较的时候如果条件写成i < s2.length 就可以正常运行但只能比较出前四项,引文两个数组长度不一样s3数组里面的内容比s数组里面的内容要多,把条件改成i < s2.length,结果比较出前四项之后报错ArrayIndexOutOfBoundsException: length=4; index=4,请问在我代码的基础上要怎么修改才能解决这个问题呢?

简单一句话来说就是两个长度不等的字符串数组找出他们不同的地方 打印出来~要怎么做?怎么修改?

3个回答

你下标越界了。这个可以用dp解决

sld22525482
「已注销」 dp?能说一下用法吗
大约 4 年之前 回复

String[] s2 = new String[] { "124453", "258", "98", "123" };
String[] s3 = new String[] { "124453", "2", "3" };
int index = 0;
for (String item2 : s2) {
for (String item3 : s3) {
index++;
if (item2.length() != item3.length()) {
System.out.println("两个数组存在差异:s2值为" + item2 + "\t s3值为" + item3);
}
}
}

你这里的主要问题是两个数组的长度不同,当s2比s3长的时候,s3会出现下标越界的问题

sld22525482
「已注销」 我把我的代码贴在下面了能帮我看一下吗?打印的时候有重复打印的问题
大约 4 年之前 回复
sld22525482
「已注销」 多谢!!这个问题解决了呀,还有就是我还想以System.out.println("第" + count + "个位置的值不同,值为" + s3[i]);这种方式打印出来要怎么修改一下呢
大约 4 年之前 回复
int count = 0;
        for (String i : s3) {
            for (String j :s2) {
                count++;
                if (i.length() != j.length()) {
                    System.out.println("第" + count + "个位置的值不同,值为" + i);
                }
            }
        }

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问