Java编译错误 无法将类应用到给定类型

importjava.util.Scanner;publicclassCalendar{publicintcountDays(intmonth,intyear){inty... import java.util.Scanner;
public class Calendar{
public int countDays(int month,int year){
int y=year;
int m=month;
int days=0;
for(int i=1900;i<=y-1;i++){
if(i%4==0&&i%100!=0||i%400==0){
days+=366;
}else{
days+=365;
}
}
for(int j=1;j<=m-1;j++){
if(m==2){
if(y%4==0&&y%100!=0||y%400==0){
days+=29;
}else{
days+=28;
}
}else{
if(m==4||m==6||m==9||m==11){
days+=30;
}else{
days+=31;
}
}
}
return days;
}
public static void main(String[] args){
// System.out.println("**日历**");
System.out.println("请输入年份:");
Scanner year=new Scanner(System.in);
int y=year.nextInt();
System.out.println("请输入月份:");
Scanner month=new Scanner(System.in);
int m=month.nextInt();
int count=countDays(year,month);
System.out.println("共"+days+"天");
}
}

初学Java,这段代码可能会有很多问题,求大神耐心指导。
展开
 我来答
xiawei5580
推荐于2017-12-16 · TA获得超过106个赞
知道答主
回答量:45
采纳率:0%
帮助的人:43.4万
展开全部
System.out.println("请输入年份:");
Scanner year=new Scanner(System.in);
int y=year.nextInt();
System.out.println("请输入月份:");
Scanner month=new Scanner(System.in);
int m=month.nextInt();
int count=countDays(year,month);
请看,year和month都是Scanner对象,但是你定义的countDays()函数传递的参数是int,int,但实际传递的是Scanner。
你应该是写错了: int count=countDays(y,m);这样写,写程序一定要细心,而且要善于看错误信息。命令行下已经给你把错误指出来了,只是你没有发现而已。
追问

更改过之后这个问题没有了,但是应该怎样在静态上下文中引用非静态方法呢?

追答
  1. 静态方法只能直接调用静态方法,所以你可以把countDays方法修改为static的

  2. 方法2: int  count=Calendar.countDays(y,m);(应该是这么写的,没有验证)

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式