【问题标题】:Compare char arrays and print the lowest values比较 char 数组并打印最小值
【发布时间】:2014-10-13 20:43:00
【问题描述】:

我编写这段代码是为了比较两个 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[7]&lt;b[7] 会受到伤害)
  • “我的程序出了什么问题...” -- 好问题。我们应该猜测吗?还是您要告诉我们问题出在哪里?
  • 你根本不需要c,它只是在你的代码中引入一个ArrayOutOfBoundException
  • 不,兄弟们!我想比较这两个数组中的每个元素:例如 a[0] 和 b[0]。如果 a[0] 小于 b[0],我首先打印较小的元素,然后打印较大的元素。

标签: java arrays


【解决方案1】:

假设 a,b 的长度相同,您希望将 a 的每个元素与 b 的一个元素进行比较 - 所以您的迭代限制应该是 a 的长度(或 b 的长度 - 此处假设相同)

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

【讨论】:

    【解决方案2】:

    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。

    【讨论】:

    • 谢谢!问题是:这段代码和之前的代码只给了我 4 个字符。我需要所有 8 个字符。我怎样才能做到这一点?也许我必须在第三个数组中包含两个数组,然后逐步比较元素?
    【解决方案3】:

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

    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

    【讨论】:

    • 您的答案已被标记为低质量答案,请提供一些信息
    【解决方案4】:

    谢谢你们!我欠你。我觉得这部分代码更接近真正的结论:)

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

    再次感谢您的支持:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-15
      • 1970-01-01
      • 1970-01-01
      • 2013-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-10
      相关资源
      最近更新 更多