我编写了这段代码来比较两个char数组,每次都打印少一个。
public class CompareCharArrays {
public void buildingArrays() {
char[] a={'a','b','c','d'};
char[]b={'l','f','a','g'};
char[]c=new char[8];
for(int i=0; i<c.length;i++){
if(a[i]<b[i]){
c=a;
System.out.println("Element from array a: "+c[i]);
} else {
c=b;
System.out.println("Element from array b: "+c[i]);
}
}
}
我的程序有什么问题,我该如何解决?提前谢谢。
答案 0 :(得分:0)
假设a,b的长度相同,你想要将a的每个元素与b的元素进行比较 - 所以你的迭代限制应该是a的长度(或者b - 相同的假设在这里)
如果它们的长度不同,则迭代较短的长度,然后只输出较长的剩余值。
答案 1 :(得分:0)
您可以执行以下操作:
public class CompareCharArrays {
public void buildingArrays() {
char[] a = {'a','b','c','d'};
char[] b = {'l','f','a','g'};
for(int i=0 ; i<a.length ; i++)
System.out.println("Element from array " + (a[i] < b[i] ? "a : " + a[i] : "b : " + b[i]);
}
}
您不需要使用第三个变量c
,尤其是如果您像使用它一样使用它,使用与其他两个数组长度不同的长度初始化它,抛出ArrayOutOfBoundException
。
答案 2 :(得分:0)
c不需要长度为8而是4。 你做了c = a,但你的意思是c [i] = a [i]
纠正这两个错误导致了这个: char[] a={'a','b','c','d'};
char[] b={'l','f','a','g'};
char[] c= new char[4];
for(int i=0; i<c.length;i++){
if(a[i]<b[i]){
c[i]=a[i];
System.out.println("Element from array a: "+c[i]);
} else {
c[i]=b[i];
System.out.println("Element from array b: "+c[i]);
}
}
然后将c设置为a,b,a,d。
答案 3 :(得分:0)
谢谢你们!我欠你。我认为这部分代码更接近真实的结论:)
public class CompareCharArrays {
public void biuldingArrays() {
char[] a={'a','b','c','d'};
char[]b={'l','f','a','g'};
for(int i=0; i<a.length;i++){
System.out.println("The first element is :"+(a[i] < b[i] ? "a : " + a[i]+" "+b[i] : "b : " + b[i]+ " "+ a[i]));
} }
}
再次感谢您的支持:)