无法从静态上下文中引用非静态变量

import java.util.Scanner;

public class calendar1{

int y=0;
int m2=0;
int sum=0;
int month;
int year;

public static void getinformation(){
Scanner in= new Scanner(System.in);
System.out.println("The calendar is from 01/01/1900 to ∞:");
System.out.println("Please input month and year:");
System.out.print("year:");
year=in.nextInt();
System.out.print("month:");
month=in.nextInt();
}

public static void days(){
//days in each year
for(y=1900;y<year;y++){
if((y%4==0)&&(y%100!=0)||(y%400==0))
{sum=sum+366;}
else {sum=sum+365;}
}
//add days in final year
for(m2=1;m2<month;m2++){
if(m2==2){
if((y%4==0)&&(y%100!=0)||(y%400==0))
{sum=sum+29;}
else {sum=sum+28;}
}
else{
if((m2==4)||(m2==6)||(m2==9)||(m2==11))
{sum=sum+30;}
else {sum=sum+31;}
}
}

//calculate the total days

sum=sum+1;

}

public static void display(){
System.out.println("Sun\tMon\tTue\tWed\tThu\tFri\tSat");
int day=sum%7;
int n=0;
int m=0;//how many days in this month?
if(month==2){
if((y%4==0)&&(y%100!=0)||(y%400==0))
{m=29;}
else {m=28;}
}
else{
if((month==4)||(month==6)||(month==9)||(month==11))
{m=30;}
else {m=31;}
}
for(n=1;n<=day;n++){
System.out.print("\t");}
for(n=1;n<=m;n++){

if(sum%7==6){ System.out.print(n+ "\n");}
else {System.out.print(n+ "\t");}

sum++;

}
}

public static void main(String[] args){
calendar1 calendar=new calendar1();

getinformation();
days();
display();

}
}

我是初学者 请问这种问题该怎么解决啊?谢谢~

你好:
你的方法都是静态的(static),变量是非静态的,静态方法只能调用静态变量,所以把你类开头定义的那些变量改成静态的就行了
温馨提示:答案为网友推荐,仅供参考
相似回答