【问题标题】:Java method which sums two one dimensional arrays对两个一维数组求和的 Java 方法
【发布时间】:2018-07-28 10:53:18
【问题描述】:

我是一名 Java 初学者,目前正在为考试而学习。我有一本关于任务的书,一个任务是两个编写一个方法,如果两个 int 数组的长度相同,则该方法相加。如果它们的大小不同,则结果为空。对于不均匀的结果,我使用 double 作为值类型。我从这个开始:

package aufgaben;

public class Aufgabe7 {

    public static double ArrayRechner(int[] a, int [] b) {  
        double ergebnis;
        if (a.length == b.length) {
            result = a + b; // this gives me an error
            System.out.println("Fast geschafft");
        }
        else {
            result = 0.0;
        }
        System.out.println("the result is " + result);
        return result;
    }
}

但它在标记的代码行上说:

对于参数类型 int[]、int[],运算符 + 未定义。

我的问题在哪里?我需要重写什么?

【问题讨论】:

    标签: java arrays methods int


    【解决方案1】:

    Java 数组中的加法没有重载。您有两个int[] 实例,您可以使用IntStream 并获取sum()(假设您使用的是Java 8+)。并且,请遵循 Java 命名约定。这可能看起来像

    public static double getArrayRechner(int[] a, int[] b) {
        double result = 0;
        if (a != null && b != null && a.length == b.length) {
            result = IntStream.of(a).sum() + IntStream.of(b).sum();
            System.out.println("Fast geschafft");
        }
        System.out.println("the result is " + result);
        return result;
    }
    

    【讨论】:

      【解决方案2】:

      我认为 Java 不支持使用 + 操作将 2 个数组的内容相加。我会遍历两个数组并将所有内容相加。

      public static double ArrayRechner(int[] arrayEins, int[] arrayZwei) {
          double ergebniss = 0;
          if (arrayEins.length == arrayZwei.length) {
              for (int X = 0; X < arrayEins.length; X++) {
                  ergebniss += arrayEins[X] + arrayZwei[X];
              }
          }
          return ergebniss;
      }
      

      【讨论】:

        【解决方案3】:

        您可以通过使用 for 循环遍历两个数组中的每个元素来计算总和。这是一种直观易懂的方式。

        if (a.length == b.length) {
             for (int i = 0; i < a.length; i++) {
                  result += a[i] + b[i];
             }
             System.out.println("Fast geschafft");
        }
        

        【讨论】:

          【解决方案4】:

          工作代码:

          public class Aufgabe7 {
          
              public static int result = 0;
          
              public static int ArrayRechner(int[] a, int[] b) {
          
                  if (a.length == b.length) {
          
                      for (int i = 0; i < a.length; i++) {
                          result = result + a[i] + b[i];
          
                      }
                      System.out.println("Fast geschafft");
                  }
          
                  return result;
          
              }
          
              public static void main(String args[]) {
                  int a[] = { 1, 1, 1 };
                  int b[] = { 2, 2, 2 };
                  System.out.println(ArrayRechner(a, b));
          
              }
          }
          

          【讨论】:

            【解决方案5】:

            Java 不支持运算符重载。

            public static double ArrayRechner(int[] a, int [] b) {
                    double result = 0.0;
                    if (a.length > 0 && a.length == b.length) {
                        int sumOfA = Arrays.stream(a).sum();
                        int sumOfB = Arrays.stream(b).sum();
                        result = sumOfA + sumOfB;
                        System.out.println("Fast geschafft");
                    }
                    System.out.println("the result is " + result);
                    return result;
            }
            

            【讨论】:

            • 你可以直接调用sum()而不是reduce(0, Integer::sum);
            猜你喜欢
            • 1970-01-01
            • 2013-03-11
            • 2014-11-10
            • 1970-01-01
            • 1970-01-01
            • 2021-01-30
            • 2021-08-11
            • 1970-01-01
            相关资源
            最近更新 更多