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