gpt4 book ai didi

java - 错误 : Constructor cannot be applied to given types

转载 作者:行者123 更新时间:2023-11-30 07:16:34 26 4
gpt4 key购买 nike

所以我正在为这个降雨任务编写一个类,我想我可以让它工作,但我在程序的最后部分“Rainfall rain = new Rainfall();”遇到了问题。

我知道到目前为止,我的代码中可能存在一些逻辑错误,但我正专注于尝试至少让它打印出来,以便我可以解决这些问题。谢谢!

/**
Rainfall.java calculated the total annual and average
monthly rainfall from the array. This program also returns
the month with the most rainfall and the month with the least rainfall.
*/


public class Rainfall
{

//set integer month to 12
private int month = 12;

private double[] months;

/**
Constructor
@param scoreArray An array of test scores
*/
public Rainfall(double[] rainfallArray)
{
months = rainfallArray;
}
//Get total annual rainfall
public double getTotal()
{
double total = 0;

//for loop to go through the entire array to calculate the total amount of rainfall
for (int i = 0; i < month; i++)
{
total = total + months[i];
}

return total;
}

//Calculate average monthly rainfall
public double getAverage()
{
double total = 0; //To hold the current total amount of rainfall
double average; //To hold the average amount of rainfall

for (int i = 0; i < month; i++)
{
total = total + months[i];
}

//Calculate average rainfall
average = total / (months.length + 1);

return average;
}
//Get month with the most rain
public double getMost()
{
double most; //To hold the most amount of rainfall

//set the first month in the array
most = months[0];

int m=0;


for (int i = 0; i < month; i++)
{
if (months[i] < most)
{
m=i;
}
}
return most;
}

//Get month with the least rain
public double getLeast()
{
double least; //To hold the least amount of rainfall
int m=0;

//set the first month in the array
least = months[0];


for (int i = 0; i < month; i++)
{
if (months[i] < least)
{
m = i;
}
}

return least;
}

public static void main(String[ ] args)
{

Rainfall rain = new Rainfall();
rain.setMonths();

//Display results of the Total, Avg, and Most and Least calculations of rainfall
System.out.println("The total rainfall for the year: " + rain.getTotal());
System.out.println("The average rainfall for the year: " + rain.getAverage());
System.out.println("The month with most rain: " + rain.getMost());
System.out.println("The month with least rain: " + rain.getLeast());
}


}

最佳答案

更改您的构造函数以使用 varargs参数:

public Rainfall(double... rainfallArray) {
months = rainfallArray; // a varargs comes in as an array, ie double[]
}

然后当你构造它时,你可以传入任意数量的double(包括没有)。

即,所有这些都可以:

Rainfall r1 = new Rainfall();
Rainfall r2 = new Rainfall(4);
Rainfall r3 = new Rainfall(4, 5, 6, 15);

请注意,在不传递任何参数的情况下,即 new Rainfall() 仍会传入一个数组,但它的长度为零。


如果您想断言传入了特定的月数,请将此添加到您的构造函数中:

if (rainfallarray.length != 12)
throw new IllegalArgumentException(
"Expecting 12 months of data, but only got " + rainfallarray.length);

关于java - 错误 : Constructor cannot be applied to given types,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16804350/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com