在并行数组中查找值JAVA初学者
我需要一些关于两件事的指导我的computeLowestMonth方法不能正常工作它只是每次给我一个$0.00的值。我的for循环错了吗 第二,我需要更好地了解如何找到该月份存储的最低值和最高值,然后打印出来在并行数组中查找值JAVA初学者,java,arrays,Java,Arrays,我需要一些关于两件事的指导我的computeLowestMonth方法不能正常工作它只是每次给我一个$0.00的值。我的for循环错了吗 第二,我需要更好地了解如何找到该月份存储的最低值和最高值,然后打印出来 static double computeLowestMonth(double[] monthlySales){ double lowest = 0; for(int i=1; i < monthlySales.length; i++)
static double computeLowestMonth(double[] monthlySales){
double lowest = 0;
for(int i=1; i < monthlySales.length; i++)
{
if (monthlySales[i] < lowest)
lowest = monthlySales[i];
}
System.out.print("Lowest Sales: \t");
System.out.println(f.format(lowest));
return lowest;
}
static void displaySaleInfo(){
}
public static void main(String[] args){
getSales();
totalSales();
computeHighestMonth(monthlySales);
computeLowestMonth(monthlySales);
computeAverageSales(monthlySales);
}//end main
}//end class
静态双计算月数(双[]月数){
双最低=0;
对于(int i=1;i
您有几个问题
0
开始,而不是1
(数组的索引是从零开始的)lower
变量初始化为大于任何预期值的值,否则,0
的初始值可能会小于数组的所有元素static double computeLowestMonth(double[] monthlySales){
double lowest = 1000000; // pick some high enough number.
for(int i=0; i < monthlySales.length; i++)
{
if (monthlySales[i] < lowest)
lowest = monthlySales[i];
}
System.out.print("Lowest Sales: \t");
System.out.println(f.format(lowest));
return lowest;
}
或者,在Java 8中,您可以完全避免循环,只需执行以下操作:
Arrays.stream(monthlySales).min().getAsDouble();
computeLowestMonth中存在的主要问题是,最小值从0开始,然后期望值更低,除非值为负值,否则值不会更低。虽然这很混乱,但您可以执行以下操作:
double lowest = Double.MAX_VALUE;
这将在最高值处启动,每个较低的值将更改为最低值。您还做了一些其他奇怪的事情,比如不捕获返回值,并将静态引用发送到方法中,但这将解决始终打印0的问题
double lowest = 0;
double lowest = Double.POSITIVE_INFINITY;
这意味着在下面的循环中,每月销售额将与$0.00的价值进行比较,这将导致没有任何东西低于$0.00
你需要从
double lowest = 0;
double lowest = Double.POSITIVE_INFINITY;
它应该会起作用。
还有一个问题是,您要从索引=1开始循环,它应该是0,正如上面Benjamin M所说。您的for循环应该从
i=0
开始,而不是i=1
。好的,谢谢!我修复了它,但仍然没有得到最低的返回值。这仍然是一项正在进行的工作,我是一个完整的n00b它有点混乱=)我如何更好地了解如何找到该特定月份存储的最低值和最高值,然后将其打印出来?