首页 > 解决方案 > 方法返回给出错误和零参数构造函数做错了

问题描述

我正在编写这个小程序作为作业,我被困在两件事上,第一,我对零参数构造函数不太擅长,因为它现在对我来说是一个新概念,第二在最后一个方法“检查”中返回给出错误:" 令牌 "return" 上的语法错误,预期无效"。如果您可以通过更正零参数构造函数来帮助它,并通过指出错误来返回它,那将不胜感激。

import java.util.Scanner;
public class Zeller {
   Scanner input = new Scanner (System.in);
private int year ;
private int month;
private int day;
private float weekDay;
  int countLeapYears;


        public Zeller() {
            year = 0;
            month = -1;
            day = -1;
        }
        public static int setYear( int year ){
            if(year > 0){
                return year;
            }
            else return year;
        }
        public static int setMonth( int month ){
            if( month >= 1 && month <= 12){
                return month;
            }
            else return -1;
        }
        public static int setDay( int day ){
            if( day >=1 && day <= 31){
                return day;
            }
            else return -1;
        }
        public static void Check ( int year, int month, int day ){
            year = setYear(year);
            month = setMonth(month);
            day = setDay(day);
            return year, month, day;
        } 
    public static void main(final String[] args) {
       Zeller ex1 = new Zeller();
    }
}

标签: javamethods

解决方案


您的构造函数没有任何问题。我不明白你对零参数构造函数的困惑。

正如评论所述,当您的方法声明声明它不返回任何内容(void)时,您正试图返回一个值。此外,带逗号的返回值不起作用。你只能返回一个东西,尽管那个东西可以是一个数组或具有多个值的对象。数组将类似于new int[] {year, month, day};.

您没有提及它,但您可能还尝试从静态方法访问成员变量。静态方法不是实例化对象上的方法。如果您打算Check()引用类顶部的私有成员变量,那么它不应该是静态的。此外,如果您打算访问成员变量,因为您正在重载变量名yearmonthday,您将需要使用this.year等来引用成员变量而不是形式参数。


推荐阅读