首页 > 解决方案 > 语法错误,为什么我会得到它们?

问题描述

我正在为我的 Java 类做一个问题,该问题涉及获取一年的总降雨量、平均降雨量、最少降雨量和最多降雨量。我一生都无法弄清楚我做错了什么。我收到语法错误,我不太明白为什么。

import java.util.Scanner;
public class Rainfall {
    public static void main(String[] args) {
        Scanner scnr = new Scanner(System.in);

        final int ttlMonth = 12; // for total months , which will always be 12//
        double[] mRain = new double[ttlMonth]; //mRain for monthly rain//
        int i = 0; //for use in the array//
        double ttlRain; //total rain//
        double avgRain; //average rain//
        double maxRain; //most rain//
        double minRain; //least rain//

        System.out.println("Enter the monthly rain fall amount: ");


        for(i = 0; i < ttlMonth; i++){

            do{
                System.out.print("Month " + (i+1) + ": ");
                mRain[i] = scnr.nextDouble();
            }
            while(mRain[i] < 0);            
        }
            //tTl for total//
            ttlRain(double[] array) {
                double tTl = 0; 
                for(i = 0; i < array.length; i++){
                    tTl += array[i];
                    } 
                ttlRain = tTl; 
                }
            //aVg for average//
            avgRain(double[] array) {
                double aVg = 0; 
                aVg = ttlRain(array)/array.length;
            }

            //mAx for the most rainfall//
            maxRain(double[] array) {
                double mAx = 0; 
                for (i = 0; i < array.length; i++){
                    if(array[i] > mAx){
                        mAx = array[i];
                    }
                }

            }           
            //mIn for the least amount of rainfall//
            minRain(double[] array) {
                double mIn = array[0]; 
                for(i = 0; i < array.length; i++){
                    if(array[i] < mIn){
                        mIn = array[i];
                    }
                }

            }
        System.out.println("The yearly sum of rain: " + ttlRain);
        System.out.println("The average ammount of rain: " + avgRain);
        System.out.println("The most amount of rain fall: " + maxRain);
        System.out.println("The least amount of rain fall: " + minRain);
    }                   
}

标签: javaarrays

解决方案


Java语言的多个问题:

  1. 因为您正在执行一个静态函数,所以内部调用的所有函数也需要是静态的

例如,给定:

 static void a(){
    b(); // does not compile
    c(); // compiles
 }

 void b(){}
 static void c(){}
  1. 所有函数都需要声明一个返回类型,如 void 或 double (在你的情况下)

  2. 所有返回值的函数都需要一个 return 关键字,并带有返回值。

  3. 您不能在另一个函数中创建命名函数,但可以创建匿名 lambda 函数

例如,给定:

    double avgRain(double[] array) { // declares a double return type
        return 9.0;
    }
    void print(double in) { // does not return anything. This is a voif function
        System.out.println(in)
    }
  1. 为了调用函数,您需要传递所有必需的参数

例子:

  double sum(double a,double  b){
    return a+b;
  }
  sum(); // does not compile
  sum(1.0,4.0); // compiles

将上述更改应用于您的代码后,它会编译并工作

public class Rainfall {
    public static void main(String[] args) {
        Scanner scnr = new Scanner(System.in);

        final int ttlMonth = 12; // for total months , which will always be 12//
        double[] mRain = new double[ttlMonth]; //mRain for monthly rain//

        System.out.println("Enter the monthly rain fall amount: ");

        for (int i = 0; i < ttlMonth; i++) {

            do {
                System.out.print("Month " + (i + 1) + ": ");
                mRain[i] = scnr.nextDouble();
            }
            while (mRain[i] < 0);
        }

        System.out.println("The yearly sum of rain: " + ttlRain(mRain));//5
        System.out.println("The average amount of rain: " + avgRain(mRain));//5
        System.out.println("The most amount of rain fall: " + maxRain(mRain));//5
        System.out.println("The least amount of rain fall: " + minRain(mRain));//5
    }

    //tTl for total//
    private static double ttlRain(double[] array) { // 1,2,3
        double tTl = 0;
        for (int i = 0; i < array.length; i++) {
            tTl += array[i];
        }
        return tTl;//4
    }

    //aVg for average//
    private static double avgRain(double[] array) { // 1,2,3
        return ttlRain(array) / array.length;
    }

    //mAx for the most rainfall//
    private static double maxRain(double[] array) { // 1,2,3
        double mAx = 0;
        for (int i = 0; i < array.length; i++) {
            if (array[i] > mAx) {
                mAx = array[i];
            }
        }
        return mAx;
    }

    //mIn for the least amount of rainfall//
    private static double minRain(double[] array) { // 1,2,3
        double mIn = array[0];
        for (int i = 0; i < array.length; i++) {
            if (array[i] < mIn) {
                mIn = array[i];
            }
        }
        return mIn;
    }
}

推荐阅读