比较字符数组并打印最低值



我写这段代码是为了比较两个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]);
            }       
       }
 }

我的程序出了什么问题,如何修复?提前谢谢。

假设a、b的长度相同,您需要将a的每个元素与b的一个元素进行比较,因此您的迭代极限应该是a的长度(或b的长度,此处假设相同)

如果它们的长度不相同,则在较短的长度上迭代,然后只输出较长的剩余值。

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。

您可以简单地执行以下操作:

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

谢谢大家!我欠你的。我认为这部分代码更接近于真正的结论:)

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]));  
 }  }
}

再次感谢您的支持:)

最新更新