281570985 发表于 2009-1-21 00:59:32

一个类方法调用的问题

这个是要求输入一个日期,如 2008年2月3号,则输出这是今年第34天

import java.util.*;
public class Nyr {

        /**
         * 输入日期如:2008 2 3 则输出是今年的第34天
         */
       
       
         int  mdays(int year, int month){
                if(month == 2) return (year % 4 == 0 && !(year % 100 == 0) || year % 400 == 0)?29:28;
                else if(month == 4 || month == 6 || month == 9 || month == 11)
                        return 30;
                else
                        return 31;
               
               
        }
       
        public static void main(String[] args) {
                Scanner input = new Scanner(System.in);
                System.out.print("请输入年份: ");
                int year = input.nextInt();
                System.out.print("请输入月份(1-12): ");
                int month = input.nextInt();
                System.out.print("请输入日期(1-31): ");
                int day = input.nextInt();
               
                while(month > 1){
                        day += mdays(year,month);
                        month--;
                }
               
               

        }

}

这个是要求输入一个日期,如 2008年2月3号,则输出这是今年第34天

现在的问题是怎么样把这个day += mdays(year,month);  (这边提示不能调用非静态方法mdays,本人不懂啦)
这个位置上的方法调用,或者说上面的mdays 方法是放到哪,然后怎么调用才是对的,本人是新手,不太懂,请各位帮忙了,谢谢!!!

temade 发表于 2009-1-21 11:08:47

static  int  mdays(int year, int month){

往昔如梦 发表于 2009-1-21 14:09:54

静态方法里面要通过对象调非静态方法(Nyr now = new Nyr(); day += mdays(year,month);

prolove 发表于 2009-5-30 12:10:22

普通方法只能用对象调用  即 Nyr now = new Nyr();
类方法可以用对象也可用类名' Nyr. '调用.
还有上面的month--应该放在调用 方法之前:
while( month>1)
                {
                        month--;
                        day+=Days.mdays(year,month);
                       
                }
                System.out.println("是这一年的第"+day+"天");
页: [1]
查看完整版本: 一个类方法调用的问题