【问题标题】:Type Mismatch: Can't convert double into double[]类型不匹配:无法将双精度转换为双精度 []
【发布时间】:2020-07-28 08:30:28
【问题描述】:

当我运行这个 java 代码时,我得到了错误。我是java新手。谁能帮忙。


package raza.project.arrays;
import java.util.*;
public class arraysLearning {

public static void main(String[] args) {
  int [] numbers = { 25,36,38,63,89,52,74};
  double[] med = median(numbers);
}
  //Return the median value of an array of numbers
//without changing the parameter array
public static double median(int[] numbers) {
 int[] tmp = Arrays.copyOf(numbers, numbers.length);
 Arrays.sort(tmp);
 int mid = tmp.length/2; // Note: int division
 if (tmp.length%2 == 0) { // even length?
 return (tmp[mid-1]+tmp[mid])/2.0; //float division
 }
  else {
     return tmp[mid];
     }
  }
}

java编译器是最新的jdk14

【问题讨论】:

  • median(numbers) 返回一个双精度值。您正在尝试将结果分配给 double[] med,这是一个数组。
  • 我明白了。谢谢。

标签: java arrays methods call type-mismatch


【解决方案1】:

这个方法:public static double median(int[] numbers)返回一个double类型的对象。

当你想调用一个方法来获取一个变量中的结果时,你需要确保该变量的类型与方法返回的类型相同。

你需要改变这一行:

double[] med = median(numbers);

double med = median(numbers);

这里,变量的类型为double,方法返回double。两种类型都匹配,编译器很高兴并且您的代码可以编译。但在您的情况下,类型是 double[] 并且该方法返回一个 double 对象...没有匹配项,因此您的代码无法编译

【讨论】:

    【解决方案2】:

    您的 median() 方法应该返回一个“double”值,而不是一个 double 值数组。

    public static void main(String[] args) {
      int[] numbers = {25,36,38,63,89,52,74};
      double med = median(numbers); // remove [] on this line.
    }
    

    【讨论】:

      【解决方案3】:

      你正在返回一个双精度值,但你正在将它返回到一个双精度数组,类型不匹配。

      导入 java.util.*; 公共类测试 {

      public static void main(String[] args) {
          int [] numbers = { 25,36,38,63,89,52,74};
          double med = median(numbers);
      }
      //Return the median value of an array of numbers
      //without changing the parameter array
      public static double median(int[] numbers) {
          int[] tmp = Arrays.copyOf(numbers, numbers.length);
          Arrays.sort(tmp);
          int mid = tmp.length/2; // Note: int division
          if (tmp.length%2 == 0) { // even length?
              return (tmp[mid-1]+tmp[mid])/2.0; //float division
          }
          else {
              return tmp[mid];
          }
      }
      

      }

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-13
        • 1970-01-01
        • 1970-01-01
        • 2015-06-12
        • 2015-02-12
        • 1970-01-01
        相关资源
        最近更新 更多