错误:类型不兼容:不能将double转换为double []

时间:2018-09-29 21:09:27

标签: java

我正在尝试编写一个代码,该代码接收质量和体积的三种不同组合,然后将每个值存储到两个不同的数组中:质量和体积。
还需要创建一种方法来计算密度。
但是,当我尝试调用该方法以便使用输入的质量和体积进行计算时,出现错误。

这是错误:

  

Density.java:19:错误:不兼容的类型:无法转换为double   加倍[]   System.out.printf(“%。2f”,calculateDensity(mass [0],volume [0]));

注意:一些消息已经简化;用-Xdiags:verbose重新编译以获取完整输出
1个错误
这是我的代码:

import java.util.Scanner;

public class Density {
    public static void main (String [] args) {
        double [] mass = new double[3];
        double [] volume = new double[3];
        Scanner scan = new Scanner(System.in);
        System.out.println("Enter the mass and volume for your three compounds.");

        for (int i = 0; i < 3;i++) {
            System.out.print("Enter mass in grams:  ");
            mass[i] = scan.nextDouble();
            System.out.print("Enter volume in millimeters:  ");
            volume[i] = scan.nextDouble();
        }

        System.out.print("The density for mass = ");
        System.out.printf("%.2f", mass[0]);
        System.out.print("g and volume = ");
        System.out.printf("%.2f", volume[0]);
        System.out.print("ml is: ");
        System.out.printf("%.2f",calculateDensity(mass[0],volume[0]));
    }

    public static void calculateDensity (double[] mass, double[] volume) {
        double [] density = new double [3];
        density[0] = mass[0] / volume[0];
    }
}

我很乐意帮助您找出问题所在。我不完全确定如何使用数组定义方法或使用数组的调用方法。 任何帮助表示赞赏。 谢谢!

4 个答案:

答案 0 :(得分:1)

calculateDensity需要加倍,因为参数不是double []。  您还需要从密度中返回一个double值,否则您将无法打印出一些东西。

public static double calculateDensity (double mass, double volume){
//your code
return density;
}

答案 1 :(得分:0)

calculateDensity参数是数组(double []),但是您传递了(mass [0],volume [0]),它是原始类型double。

将方法参数更改为:

public static void calculateDensity (double mass, double volume)

答案 2 :(得分:0)

import java.util.Scanner;

public class Density {
    public static void main (String [] args) {
        double [] mass = new double[3];
        double [] volume = new double[3];
        Scanner scan = new Scanner(System.in);
        System.out.println("Enter the mass and volume for your three compounds.");

        for (int i = 0; i < 3;i++) {
            System.out.print("Enter mass in grams:  ");
            mass[i] = scan.nextDouble();
            System.out.print("Enter volume in millimeters:  ");
            volume[i] = scan.nextDouble();
        }

        System.out.print("The density for mass = ");
        System.out.printf("%.2f", mass[0]);
        System.out.print("g and volume = ");
        System.out.printf("%.2f", volume[0]);
        System.out.print("ml is: ");
        System.out.printf("%.2f",calculateDensity(mass[0],volume[0]));
    }

    public static double calculateDensity (double mass, double volume) {
        return  mass / volume;
    }
}

答案 3 :(得分:0)

考虑到您需要打印所有三个输出,而不仅是第一个输出,因此您需要使用与public static void calculateDensity (double[] mass, double[] volume)完全相同的方法 试试这个:

public static void main(String[] args) {
    double [] mass = new double [3];
    double [] volume = new double [3];
    Scanner s = new Scanner(System.in);
    System.out.println("Enter the mass and volume for your 3 compounds.\n");

    for (int i = 0; i < 3; i++) {
        System.out.print("Enter mass in grams: ");
        mass [i] = s.nextDouble();
        System.out.println();
        System.out.printf("Enter volume in milliliters: ");
        volume [i] = s.nextDouble();
        System.out.println();
    }
    s.close();
    calculateDensity(mass, volume);
}
public static void calculateDensity(double[] mass, double[] volume) {

    System.out.printf("The density for mass = %.2f g and volume = %.2f ml is: %.2f g/ml\n\n", mass[0], volume[0], (mass[0] / volume[0]));
    System.out.printf("The density for mass = %.2f g and volume = %.2f ml is: %.2f g/ml\n\n", mass[1], volume[1], (mass[1] / volume[1]));
    System.out.printf("The density for mass = %.2f g and volume = %.2f ml is: %.2f g/ml\n\n", mass[2], volume[2], (mass[2] / volume[2]));   
}

这可能不是最好的方法,但它按规定工作。

相关问题