package com.zf.s3;
import java.io.*;
public class TextContro2
{
  static int year,monthDay,weekDay;  //定义静态变量,以便其他类调用
  public static boolean isLeapYear(int y)//判断是否为闰年
  {
    return((y%4==0&&y%100 !=0)||(y%400==0));
  }
  public static int firstDay(int y) //计算机改年的第一天是星期几
  {
   long n=y*365;
   for(int i=0;i<y;i++)
   if(isLeapYear(i))                   //判断是否为闰年
   n+=1;
   return(int)n%7;
  }
  public static void printWeek()           //打印表头
  {
   System.out.println("=========================================");
   System.out.println("日    一    二    三    四    五    六");
  }
  public static int getMonthDay(int m)  //获取每个月的天数
  {
   switch(m)
   {
     case 1:
 case 3:
 case 5:
 case 7:
 case 8:
 case 10:
 case 12:
    return 31;
 case 4:
     case 6:
     case 9:
     case 11:
        return 30;
     case 2:
       if(isLeapYear(year))
          return 29;
       else
          return 28;
    default:
         return 0; 
   }
  }
  public static void printMonth() //按不同条件打印月
  {
     for(int m=1;m<=12;m++)//循环月份
 {
 System.out.println(m+"月");
 printWeek();
 for(int j = 1;j<=weekDay;j++)//按每个月的第一天是星期几来打印相应的空格
 {
  System.out.println("   ");
 }
 int monthDay=getMonthDay(m); //获取每个月的天数
  for(int d=1;d<=monthDay;d++)
  {
   if(d<10)       //下4行对输出格式化
     System.out.print(d+"   ");
   else
     System.out.print(d+"   ");
   weekDay=(weekDay+1)%7;  //每打印一天后反映第二天是星期几
   if(weekDay==0)        //如果是星期天则换行
     System.out.println();
  }
  System.out.println('\n');
  }
}
public static void main(String[] args) throws IOException   //程序入口
{
  System.out.print("请输入一个年份:");
  InputStreamReader ir;                   //接受控制台的输入
  BufferedReader in;
  ir=new InputStreamReader(System.in);
  in=new BufferedReader(ir);
  String s=in.readLine();
  year=Integer.parseInt(s);
  weekDay=firstDay(year);           //计算该年的第一天是星期几
  System.out.println("\n        "+year+"年         ");
  printMonth();
}
}
为什么用eclipse可以运行   用cmd就不行了呢???

解决方案 »

  1.   

    可以运行,与路径有关。在命令行模式中,应该切换到workspace目录中,执行java com.zf.s3.TextContro2
      

  2.   

    我用cmd试了,可以运行。首先,用cmd运行时保存的文件名应该为:TextContro2.java,即文件名与主类名一致;其次,运行时,引包那一行应该注释掉;如果还不行的话,可能就是没有设置环境变量了;右击我的电脑-属性-高级-环境变量,单击上面的CLASSPATH行,单击新建,变量名输入PATH,变量值输入安装好的jdk中的bin的路径,比如我的jdk装在C:\Program Files\Java\,则找到jdk,输入C:\Program Files\Java\jdk1.6.0_01\bin,一次点击确定。
      

  3.   

    假设在C:\JavaDemo文件夹下有类Hello.java,其源码如下:package sun.cn.hello;public class Hello {       public static void main(String[] args) {              System.out.println("Hello World!");       }     }编译:C:\JavaDemo>javac   Hello.java新建目录:       C:\JavaDemo>md cn\sun\hello移动字节码文件Hello.cass到 .\cn\sun\hello文件夹下。       C:\javaDemo>move Hello.class   .\cn\sun\hello执行程序:       C:\JavaDemo>java cn.sun.hello.Hello输入结果:       Hello World!楼主可以参照这个 试试 挺简单的
      

  4.   

    简单来说:
    先在你当前目录下编译TextContro2.java文件   即javac TextContro2.java
    然后把生成的class文件拷贝到 com\zf\s3目录下
    再执行 java com.zf.s3.TextContro2就行了
      

  5.   

    如果在 cmd 中还不会使用 javac 和 java 的话,那最好先研究一下啊。你这个带 package 的,需要这样编译:在 com 目录的上一层执行:javac -d . com/zf/s3/TextContro2.java还是在那个目录,这样运行:java -cp . com.zf.s3.TextContro2
      

  6.   

    呵呵,你没有编译吧,eclipse 会自动编译(根据你的配置可能编译后的字节码文件与源文件的路径不同)。可以使用 javac 命令编译,再用 java 命令运行。