Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.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_Overloading - Fatal编程技术网

Java方法重载:类型的方法未定义

Java方法重载:类型的方法未定义,java,overloading,Java,Overloading,我试图让命令提示符询问用户一周中的哪一天,首先让他们输入该天的字符串,然后让他们输入该天的整数。我试图重载方法“dayName”,但Eclipse不断提示我为第一个方法分配一个类型。它说“dayName()方法对于dayName类型是未定义的。我认为将它们设置为静态会有所帮助,但在这种情况下不会。有什么建议吗?提前感谢 /** * */ package mytime; import java.util.Scanner; /** * @au

我试图让命令提示符询问用户一周中的哪一天,首先让他们输入该天的字符串,然后让他们输入该天的整数。我试图重载方法“dayName”,但Eclipse不断提示我为第一个方法分配一个类型。它说“dayName()方法对于dayName类型是未定义的。我认为将它们设置为静态会有所帮助,但在这种情况下不会。有什么建议吗?提前感谢

 /**
     * 
     */
    package mytime;
    import java.util.Scanner;
    /**
     * @author Ashley
     *
     */
    public class DayOfWeek {

    static String day;
    static String weekday;
    static Scanner input = new Scanner(System.in);
    static String monday = "Mondays are a bummer.";
    static String tuesday = "At least it isn't Monday!";
    static String wednesday = "Getting there.";
    static String thursday = "Almost there.";
    static String friday = "TGIF";
    static String saturday = "Party!";
    static String sunday = "Oh no, school tomorrow!";
    static String errorDay = "Not a valid day of the week.";

    public static dayName(String day) {

        if (day.equals("Sunday")){
            weekday = sunday;
        } 
        else if (day.equals("Monday")){
            weekday = monday;
        }
        else if (day.equals("Tuesday")){ 
            weekday = tuesday;
        }
        else if (day.equals("Wednesday")){
            weekday = wednesday;
        }
        else if (day.equals("Thursday")){
            weekday = thursday;
        }
        else if (day.equals("Friday")){
            weekday = friday;
        }
        else if (day.equals("Saturday")){
            weekday = saturday;
        }
        else{
            weekday = errorDay;
        }
        return weekday;
    }

    public static void main(String[] args) {

        System.out.println("Please enter day of the week:");
        day = input.nextLine();
        System.out.println(day);
        dayName weekday = new dayName();
        weekday.dayName();

        System.out.println(weekday);

        System.out.println("Please enter day of the week:");
        int day = input.nextInt();
        System.out.println(day);
        DayOfWeek(day);
        System.out.println(weekday);
    }
    public static dayName(int day){

        switch (day){
        case 1:
            weekday = sunday;  
            break;
        case 2:
            weekday = monday;  
            break;
        case 3:
            weekday = tuesday;  
            break;
        case 4:
            weekday = wednesday;  
            break;
        case 5:
            weekday = thursday;  
            break;
        case 6:
            weekday = friday;  
            break;
        case 7:
            weekday = saturday;  
            break;
        default:
            weekday = errorDay;
            break;
        }
        return weekday;

    }

}

您需要在方法调用中传递
int
String

weekday.dayName();
变为

dayName(day);// because all are static method no need to create object
方法中也缺少返回类型

 public static dayName(String day)
换成

 public static String dayName(String day)
对于其他方法
publicstaticdayname(int-day)
也需要做同样的事情

因此,您需要将逻辑更改为:

public static void main(String[] args) {

    System.out.println("Please enter day of the week:");
    day = input.nextLine();
    System.out.println(day);
      weekday= dayName(day);
    System.out.println(weekday);

    System.out.println("Please enter day of the week:");
    int day1 = input.nextInt();
    System.out.println(day1);
    weekday=dayName(day1);
    System.out.println(weekday);
}

有几件事可能会导致你的问题

简短回答
  • 对两个
    dayName()
    方法使用
    String
    返回类型
  • 不要在main方法中使用
    dayName
    对象,而是使用
    String
  • 替换:

    day = input.nextLine();
    System.out.println(day);
    dayName weekday = new dayName();
    weekday.dayName();
    System.out.println(weekday);
    
    作者:

    解释 未定义的类
    dayName
    您的代码无法编译,因为您试图使用未定义的类型(类):
    dayName

    旁注:Java中的类名应该大写

    在这段代码中:

    dayName weekday = new dayName();
    weekday.dayName();
    
    您假设
    dayName
    是一个类,但它不存在。可能您想使用
    DayOfWeek

    未定义的方法
    dayName()
    类型dayName的方法dayName()未定义

    您收到的错误消息是因为您试图在对象
    weekday
    (类型
    dayName
    )上使用方法
    dayName()
    。这是因为您的语句
    weekday.dayName();

    问题是,您没有在该类中定义这样的方法(我甚至没有看到类
    dayName
    ,如第一部分所述)

    对于
    dayName(int)
    dayName(String)
    声明方法时使用的语法不正确:

    public static dayName(String day) {
        // ...
    }
    
    因为您不提供任何返回类型。如果您不需要返回任何内容,请按如下方式指定
    void
    返回类型:

    public static void dayName(String day) {
        // ...
    }
    

    但是,这里您需要返回一个字符串,因此将
    string
    而不是
    void

    publicstaticdayname(stringday){
    没有返回类型。对于
    publicstaticdayname(intday){
    来说,在侧注中添加
    dayName weekday=newdayname();
    是错误的
    dayName
    是必须执行的函数名而不是类名
    dayOfWeekDay=new DayOfWeek();
    dayName-weekday=new dayName();
    可以初始化方法,它应该是名为
    DayOfWeek
    的类,删除所有静态引用。返回值为
    String
    public static void dayName(String day) {
        // ...
    }