Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在并行数组中查找值JAVA初学者_Java_Arrays - Fatal编程技术网

在并行数组中查找值JAVA初学者

在并行数组中查找值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++)

我需要一些关于两件事的指导我的computeLowestMonth方法不能正常工作它只是每次给我一个$0.00的值。我的for循环错了吗

第二,我需要更好地了解如何找到该月份存储的最低值和最高值,然后打印出来

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它有点混乱=)我如何更好地了解如何找到该特定月份存储的最低值和最高值,然后将其打印出来?