int count = 0;
for (int i = 0; i<s3.length;i++) {
for (int j = 0;j<s2.length;j++) {
count++;
if (s3[i] != s2[j]) {
System.out.println("第" + count + "个位置的值不同,值为" + s3[i]);
}
}
}
贴出我的代码求大神解决一下,一点小麻烦 简单来说就是s2,s3两个数组,s3长一点s2小一点然后我想比较两个数组不同的地方并打印出来,我的代码运行之后每个结果打印出了四遍结果有1024个位置不同,但其实我的s2只有256个数组元素,我知道代码逻辑上有问题,但是像正确的输出又不太会改(总是有数组越界的问题),求大神帮忙解决一下啊~~~谢谢了!!!
如果比较字符串的大小使用:str1.compareTo(String str2)
假设 k 是这类索引的最小值;则在位置 k 上具有较小值的那个字符串(使用 < 运算符确定), 返回这两个字符串在位置 k 处两个char 值的差
this.charAt(k)-anotherString.charAt(k)
没有字符不同的索引位置, 返回这两个字符串长度的差
this.length()-anotherString.length()
不知道你是不是想要这种比较效果:
public static void main(String[] args) {
String []s2={"a","b","x","q","y"};
String []s3={"a","r","x","s","y","s","w"};
int count = 0;
//用较短的数组的长度作为循环条件,按位比较
for (int i = 0; i<s2.length;i++) {
//数组下标从0开始,所以用i+1表示第几个
count=i+1;
if (!s3[i].equals(s2[i]) ) {
System.out.println("数组第" + count + "位的值不同,s2值为" + s2[i]+" s3值为 "+ s3[i]);
}
}
}
}
输出:数组第2位的值不同,s2值为b s3值为 r
数组第4位的值不同,s2值为q s3值为 s
字符串都是可以读取的,换成数组或者列表来处理
思路不对。你这种写法,是S3[i]去和S2中的所有元素去对比。
Arrays.binarySearch()来查找。
//S3有,S2没有的
Map map1=new HashMap();
for (int i = 0; i<s3.length;i++) {
int index= Arrays.binarySearch(s2,s3[i]){
if(index==-1){
map1.put(s3[i],i);
}
}
}
//s2有,S3没有的
Map map2=new HashMap();
for (int j = 0;j<s2.length;j++) {
int index= Arrays.binarySearch(s3,s2[j]){
if(index==-1){
map1.put(s2[j],j);
}
}
public static void main(String[] args) {
String[] s2 = { "a", "b", "x", "q", "y" };
String[] s3 = { "a", "r", "x", "s", "y", "s", "w" };
int count = 0;
// 方法1
method1(s2, s3, count);
// 方法2
method2(s2, s3, count);
}
/**
* 方法2 拿s2去和s3对比
*/
private static void method1(String[] s2, String[] s3, int count) {
// 用较短的数组的长度作为循环条件,按位比较
for (int i = 0; i < s2.length; i++) {
// 数组下标从0开始,所以用i+1表示第几个
count = i + 1;
if (!s3[i].equals(s2[i])) {
System.out.println("数组第" + count + "位的值不同,s2值为" + s2[i]
+ " s3值为 " + s3[i]);
}
}
System.out.println("S3剩余部分为:");
for (int j = s2.length; j < s3.length; j++) {
System.out.print(s3[j] + "\t");
}
}
/**
* 方法2 拿s3去和s2对比
*/
private static void method2(String[] s2, String[] s3, int count) {
System.out.println("\n");
for (int i = 0; i < s3.length; i++) {
// 数组下标从0开始,所以用i+1表示第几个
count = i + 1;
//i还没超过s2时做对比
if (i < s2.length && !s3[i].equals(s2[i])) {
System.out.println("数组第" + count + "位的值不同,s2值为" + s2[i]
+ " s3值为 " + s3[i]);
} else if (i >= s2.length) {//i超过了s2的长度 直接输出
System.out.print(s3[i] + "\t");
}
}
}
结果:
数组第2位的值不同,s2值为b s3值为 r
数组第4位的值不同,s2值为q s3值为 s
S3剩余部分为:
s w
数组第2位的值不同,s2值为b s3值为 r
数组第4位的值不同,s2值为q s3值为 s
s w