【问题标题】:How could I fix my code?我该如何修复我的代码?
【发布时间】:2016-03-05 20:23:46
【问题描述】:

我正在使用 netbeans 并不断收到以下错误:

类接口或枚举预期的java

RainFall是公共的,应该在一个名为RainFall.java的文件中声明

这是代码:

package rainfalldemo;

/**
 *
 * @author 
 */

    import java.util.Scanner;
    import java.text.DecimalFormat;

    public class RainFallDemo {

    /**
     * begin main method
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // declare variables
        final int MAX_MONTHS = 12;
        double totalRainfall;
        double averageRainfall;
        int monthOfMostRain;
        int monthOfLeastRain;

        //create an array of rainfall
        double[] rainfallInYear = new double[MAX_MONTHS];

        //create array of months in a yeat
        String months[] = {"January", "February", "March", "April", "May",   
       "June", "July", "August", "September", "October", "November", 
       "December"};

        //call getRainfallValues method
        getRainfallValues(rainfallInYear, months);

        // creaet rainfall class object
        RainFall rainInYear = new RainFall(rainfallInYear);

        // create an object for DecimalFormat class
        DecimalFormat decimals = new DecimalFormat("0.00");

        //display total rainfall in the year
        totalRainfall = rainInYear.getTotalRainfall();
        System.out.println("The total rainfall in the year is: " + 
        totalRainfall);

        //display average monthly rainfall
        averageRainfall = rainInYear.getAverageRainfall();
        System.out.println("The average monthly rainfall is: " + 
        decimals.format(averageRainfall));

        //display the month with most rain
        monthOfMostRain = rainInYear.getMonthOfMostRainfall();
        System.out.println("The month with the most rain: " + 
        rainfallInYear[monthOfMostRain] + " in " + months[monthOfMostRain]);

        //display month with least rain
        monthOfLeastRain = rainInYear.getMonthOfLeastRainfall();
        System.out.println("The month with the least rain: " + 
        rainfallInYear[monthOfLeastRain] + " in " + months[monthOfLeastRain]);

        }//end of main method

        //getRainfallValues method implementation
        public static void getRainfallValues(double[]rainfallInEachMonth, 
        String[]    monthNames)
        {
        //create an object for Scanner class
        Scanner input = new Scanner(System.in);

        // get rain for every month
        for(int i = 0; i < rainfallInEachMonth.length; i++)
        {
            //prompt user for rainfall in a month
            System.out.print("enter the total rainfall for the month " + 
            monthNames[i] + ": ");
            rainfallInEachMonth[i] = input.nextDouble();
            /* verify whether the rain in the month is negative */
                    while(rainfallInEachMonth[i] < 0)
                    {
                        System.out.print("Enter positive value for rainfall: ");
                        rainfallInEachMonth[i] = input.nextDouble();
                    } //end while
        } //end for
        System.out.println();
    } //end of getRainfallValues method

    }//end of RainfallDemo class

RainFall.java

    //RainFall class

    public class RainFall
    {
    // variable declaration
    private double[] rainInYear;

    public RainFall(double[] rainfallInEachMonth)
    {
        rainInYear = new double[rainfallInEachMonth.length];

        //store rainfall
        for(int  i = 0; i < rainfallInEachMonth.length; i++)
            rainInYear[i] = rainfallInEachMonth[i];
    } // end of parameterized constructor

      //get TotalRainfall method implementation
    public double getTotalRainfall()
    {
        //local variable 
        double totalRainfall = 0.0;
        //calculate the total rainfall in the year
        for(int i= 0; i < rainInYear.length; i++)
            totalRainfall += rainInYear[i];
        return totalRainfall;
    } // end getTotalRainfall method

    //getAverageRainFall method implementation
    public double getAverageRainfall()
    {
        //local variable
        double averageRainfall = 0.0;

        //calculate the average rainfall in a year
        averageRainfall = getTotalRainfall() / rainInYear.length;
        //return averageRainfall
        return averageRainfall;
    } // end of getTotalRainfall method

    //getMonthOfMostRainfall method implementation
    public int getMonthOfMostRainfall()
    {
        // local variable
        double most;
        int monthNumber;
        //initialize variables

        most = rainInYear[0];
        monthNumber = 0;
        //loop repeats to find the month of most rainfall
        for(int i = 1; i < rainInYear.length; i++)
        {
            // find the most rainfall
            if(rainInYear[i] > most)
            {
                most = rainInYear[i];
                monthNumber = i;
            }//end if 
        }  //end for loop
     //return month of most rainfall
        return monthNumber;
    } //end of getMonthOfMostRainfall method

    //getMonthOfLeastRainfall method implementation
    public int getMonthOfLeastRainfall()
    {
        //local variable
        double least;
        int monthNumber;
        //initialize the variables

        least = rainInYear[0];
        monthNumber = 0;
        //loop repeats to find the month of least rainfall
        for(int i = 1; i < rainInYear.length; i++)
        {
            //find least rainfall month
            if(rainInYear[i] < least)
            {
                least = rainInYear[i];
                monthNumber = i;
            }// end if
        } // end for loop
        // return the month of least rainfall
        return monthNumber;
    }// end of getMonthOfLeastRainfall method

} // end of RainFall class

【问题讨论】:

  • class RainFall删除public访问修饰符
  • 目前尚不清楚此代码示例是否全部包含在一个文件中... OP 在中间有RainFall.java,这意味着他引用了一个单独的文件。 OP 在他引用的错误消息中也有一个奇怪的大小写问题 (RainFAll is public...),但这可能是由于引用他的帖子时用户错误。
  • 现在RainFall 似乎在它自己的文件中。但这会使错误消息变得毫无意义。 @Wil,你能澄清一下吗? RainFall 在它自己的文件 RainFall.java 中吗?还是在与RainFallDemo 相同的文件中?
  • 应该在同一个文件中。
  • 马杜山,你真是个天才。非常感谢您。感谢大家的帮助,我非常感谢您的回复。我期待着在未来帮助别人,就像你帮助我一样。使用 RainFall 类删除公共修饰符有效。谢谢。

标签: java


【解决方案1】:

一个文件中不能有多个公共类。把它拿出来并按照错误的建议放在一个文件中,你会很好的。

来自Documentation

这个限制意味着每个人最多只能有一个这样的类型 编译单元。此限制使 Java 编译器变得容易 在包中查找命名类。在实践中,很多程序员 选择将每个类或接口类型放在自己的编译中 单元,无论它是公开的还是在其他代码中被引用 编译单元。

另见

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-02
    • 2019-11-25
    • 1970-01-01
    • 2014-09-01
    • 2018-11-11
    相关资源
    最近更新 更多