qq_38230766 2017-04-08 04:49 采纳率: 0%
浏览 961

关于方法的调用和定义参数的问题

这是我写的一个日历代码

 public class VisualCalendar {
    public static void main(String[] args){
        String str = "2017-4-8";
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        try {
            Date d = df.parse(str);
            Calendar c = new GregorianCalendar();
            c.setTime(d);
            c.set(Calendar.DATE, 1);//将日期设为当月一号
            c.get(Calendar.DAY_OF_WEEK);//这一天是一周中的第几天,这个方法的第一次调用
            int maxDay=c.getActualMaximum(Calendar.DATE);//确定当月最大天数

            System.out.println("日\t一\t二\t三\t四\t五\t六");
            for(int i=1;i<c.get(Calendar.DAY_OF_WEEK);i++){
                System.out.print("\t");
            }
            for(int i=1;i<=maxDay;i++){
            System.out.print(i+"\t");
            int w=c.get(Calendar.DAY_OF_WEEK);//这里调用一个方法得到的值好像必须要用一个变量保存,不然不对
            if(w==Calendar.SATURDAY){
                System.out.println();
            }
            c.add(Calendar.DATE, 1);
        }

        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }





    }
}

然后我发现了个问题,就是 int w=c.get(Calendar.DAY_OF_WEEK)这段代码;如果不用w保存这个方法的调用,在下文中直接用if(c.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY)结果就不对,但是如果提前在第一次调用这个方法时就用w将这个方法调用的结果保存的话,结果又变得很奇怪
这到底是什么情况啊,真的理解不能。。。。
第二段:

```public class VisualCalendar {
public static void main(String[] args){
String str = "2017-4-8";
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
try {
Date d = df.parse(str);
Calendar c = new GregorianCalendar();
c.setTime(d);
c.set(Calendar.DATE, 1);//将日期设为当月一号
int w=c.get(Calendar.DAY_OF_WEEK);//这一天是一周中的第几天
int maxDay=c.getActualMaximum(Calendar.DATE);//确定当月最大天数

        System.out.println("日\t一\t二\t三\t四\t五\t六");
        for(int i=1;i<w;i++){
            System.out.print("\t");
        }
        for(int i=1;i<=maxDay;i++){
        System.out.print(i+"\t");
        //这里调用一个方法得到的值好像必须要用一个变量保存,不然不对
        if(w==Calendar.SATURDAY){
            System.out.println();
        }
        c.add(Calendar.DATE, 1);
    }

    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }





}

}


  • 写回答

2条回答 默认 最新

  • 编程爱好者熊浪 2017-04-08 07:53
    关注

    没有毛病啊,int基本类型可以这样对比啊图片说明

    评论

报告相同问题?

悬赏问题

  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记