Java 将数组元素与方法的返回值进行比较
我有一种方法,可以根据用户输入的月数组计算最小和最大降雨量。我的问题是,我的方法返回最小和最大的数量,我需要它返回降雨量最高或最低的月份。我不知道如何将我的min和max方法与months数组进行比较。我想,如果我可以说min是在索引5处找到的,那么我也有办法提取month数组的索引5 我尝试了多种类型的for循环和嵌套for循环,但似乎无法获得正确的月份Java 将数组元素与方法的返回值进行比较,java,arrays,Java,Arrays,我有一种方法,可以根据用户输入的月数组计算最小和最大降雨量。我的问题是,我的方法返回最小和最大的数量,我需要它返回降雨量最高或最低的月份。我不知道如何将我的min和max方法与months数组进行比较。我想,如果我可以说min是在索引5处找到的,那么我也有办法提取month数组的索引5 我尝试了多种类型的for循环和嵌套for循环,但似乎无法获得正确的月份 public static void main(String[] args) { String[] months = {"Janu
public static void main(String[] args) {
String[] months = {"January", "February", "March","April","May","June","July","August","September","October","November","December"};
double[] rainfall = new double[months.length];
Rainfall amazon = new Rainfall();
//scanner to get user input
Scanner scanner = new Scanner(System.in);
//for loop to iterate through the months to get user input of rainfall each month
for(int i = 0; i<rainfall.length; i++) {
System.out.println("How much rainfall did you recieve, in inches, for the month of: " + months[i]);
rainfall[i] = scanner.nextDouble();
//while statement to reject negative numbers
while(rainfall[i] < 0) {
System.out.println("You can not enter a negative number");
System.out.println("How much rainfall did you recieve for the month of: " + months[i]);
rainfall[i] = scanner.nextDouble();
}
}
System.out.println("total rainfall: " + amazon.getTotalRainfall(rainfall) +
" average Rainfall: " + amazon.getAverageRainfall(rainfall) +
" min: " + amazon.getMinRainfall(rainfall) +
" max: " + amazon.getMaxRainfall(rainfall));
}
public double getMaxRainfall(double[] rainfall) {
double max = rainfall[0];
for(int i = 1; i < rainfall.length; i++)
if(rainfall[i] > max) {
max = rainfall[i];
}
return max;
}
public double getMinRainfall(double[] rainfall) {
double min = rainfall[0];
for(int i = 1; i < rainfall.length; i++)
if(rainfall[i] < min) {
min = rainfall[i];
}
return min;
}
publicstaticvoidmain(字符串[]args){
字符串[]个月={“一月”、“二月”、“三月”、“四月”、“五月”、“六月”、“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”};
双倍[]降雨量=新的双倍[月长];
降雨量=新降雨量();
//扫描仪获取用户输入
扫描仪=新的扫描仪(System.in);
//for循环遍历各个月,以获得用户每月的降雨量输入
对于(int i=0;i max){
max=降雨量[i];
}
返回最大值;
}
公共双倍降雨量(双倍[]降雨量){
双分钟=降雨量[0];
对于(int i=1;i
我需要知道降雨量最高和最低的月份。解决这个问题的方法是跟踪最高降雨量的指数,而不是数值。现在的问题是,您有两个不同的数组,其中一个数组的值与另一个数组的值不相关 为此,您可以执行以下操作:
public int getMaxRainfallIndex(double[] rainfall) {
int max = 0;
for (int i = 1; i < rainfall.length; i++)
if (rainfall[i] > rainfall[max]) {
max = i;
}
return max;
}
public static void main(String[] args) {
Rainfall[] rainfall = new Rainfall[12];
//Do everything else
}
public class Rainfall {
private String month;
private double rainfall;
//Constructor, Getters + Setters
}
public int getMaxRainfallIndex(double[] rainfall)
{
int maxIndex = 0;
double max = rainfall[0];
for(int i = 1; i < rainfall.length; i++)
if(rainfall[i] > max)
{
max = rainfall[i];
maxIndex = i;
}
return maxIndex;
}
一个可能的解决方案是返回当月的索引,因此,例如,您的
getMaxRainsion
方法应该如下所示:
public int getMaxRainfallIndex(double[] rainfall) {
int max = 0;
for (int i = 1; i < rainfall.length; i++)
if (rainfall[i] > rainfall[max]) {
max = i;
}
return max;
}
public static void main(String[] args) {
Rainfall[] rainfall = new Rainfall[12];
//Do everything else
}
public class Rainfall {
private String month;
private double rainfall;
//Constructor, Getters + Setters
}
public int getMaxRainfallIndex(double[] rainfall)
{
int maxIndex = 0;
double max = rainfall[0];
for(int i = 1; i < rainfall.length; i++)
if(rainfall[i] > max)
{
max = rainfall[i];
maxIndex = i;
}
return maxIndex;
}
您可以创建一个单独的
类,而不是单独管理两个数组:
public class RainfallByMonth {
private double rainfall;
private String month;
// Getter/Setters here
}
在您的主要方法中:
public static void main(String[] args) {
RainfallByMonth[] rainfallByMonths = new RainfallByMonth[12];
String[] months = new DateFormatSymbols().getMonths(); // array of months
Scanner scanner = new Scanner(System.in);
for (int i = 0; i < rainfallByMonths.length; i++) {
System.out.println("How much rainfall did you receive, in inches, for the month of: " + months[i]);
rainfallByMonths[i].setMonth(months[i]);
rainfallByMonths[i].setRainfall(scanner.nextDouble());
}
RainfallByMonth maxRainfall = getMaxRainfall(rainfallByMonths);
// Now you can print the results here
}
publicstaticvoidmain(字符串[]args){
RainfallByMonth[]rainfallByMonths=新RainfallByMonth[12];
String[]months=new DateFormatSymbols().getMonths();//月数组
扫描仪=新的扫描仪(System.in);
for(int i=0;i
按月计算最大降雨量:
public static RainfallByMonth getMaxRainfall(RainfallByMonth[] rainfallByMonths) {
RainfallByMonth maxRainfall = rainfallByMonths[0];
for(int i = 1; i < rainfallByMonths.length; i++) {
if(rainfallByMonths[i].getRainfall() > maxRainfall.getRainfall()) {
maxRainfall = rainfallByMonths[i];
}
}
return maxRainfall;
}
公共静态RainfallByMonth GetMaxRain(RainfallByMonth[]rainfallByMonths){
RainfallByMonth最大降雨量=rainfallByMonths[0];
for(int i=1;iMaxRainfrain.GetRainfrain()){
最大降雨量=每月降雨量[i];
}
}
回归最大降雨量;
}
同样,对于min
情况,反之亦然(只有条件不同)。这将更容易管理 publicstaticvoidmain(字符串[]args){
public static void main(String[] args) {
String[] months = {"January", "February", "March","April","May","June","July","August","September","October","November","December"};
int[] weather = {10, -1, 7,44,33,6,22,54,89,21,8,51};
int max = 0;
int index= 0;
for (int i=0;i<weather.length-1;i++ ){
if (weather[i] > m){
max = weather[i];
index= i;
}
}
System.out.println(months[index]);
}
字符串[]个月={“一月”、“二月”、“三月”、“四月”、“五月”、“六月”、“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”};
int[]天气={10,-1,7,44,33,6,22,54,89,21,8,51};
int max=0;
int指数=0;
for(int i=0;i m){
max=天气[i];
指数=i;
}
}
系统输出打印项次(月[指数]);
}
一个查找最高月份的示例程序。
要在if条件中查找最低月降雨量小于符号为什么不使用返回最小或最大降雨量月份的int
索引的方法,而不是实际的最小或最大降雨量值。谢谢。这解决了我的问题。不过我有个问题。我不完全理解该方法是如何工作的。它与我的min和max方法没有太大区别,但以某种方式返回索引。有没有可能详细说明一下雨量[max]如何为我提供最高雨量元素的索引。@Ross基本上,代码所做的是遍历数组的每个索引,并检查该位置的值是否高于当前最高值。如果这是真的,它将保存该值的索引。降雨量[max]用于获取当前实际最高值,因为我们存储的唯一内容是该值的索引。这意味着,如果当前最高索引处的值低于正在检查的值,它将为该索引设置新的最高值,依此类推。@Ross这意味着,当到达数组末尾时,所有值都已比较,并且每次比较都存储两个索引中较高的值。然后在末尾返回,这意味着您将只从数组返回最高的索引值。然后可以使用此返回值从原始2个数组中获取当月的实际值和降雨量值。