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

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,这段代码可能会有很多问题,求大神耐心指导。

第1个回答  推荐于2017-12-16
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);这样写,写程序一定要细心,而且要善于看错误信息。命令行下已经给你把错误指出来了,只是你没有发现而已。追问

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

追答

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

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

本回答被提问者采纳