-
21点...by Java - [感言]
2008年04月27日
其实,这是我很早就有的一个计划:用Java(起初是想用C的)语言来设计一个游戏。由于21点比较简单,所以选择了21点。
So,今天终于开始下手了,由于自己是Java的初学者,虽然之前看过C的一些教程,但是要设计一个游戏对我来说,不是一件易事。
说实话,设计一个游戏,真的为编程学习者提供不可多得的经验,当我在写代码时,感觉与平时的练习很不同。想想平时做的练习,感觉只能让自己熟悉一下怎样编程,对能力培养的作用不大。
刚刚学了如何建立一个对象,这次我首次运用对象,也是首次体会对象的好处(不太深),这个对象是一副扑克,扑克用数组组成,并包含一个发牌的方法........
其实,说这些也没什么,就是一个简单的游戏而已,而且是残疾的,因为没有分牌,加注等功能。反而让我深有体会的是一个人生道理。
当大学生一年,人家说大学生理论知识够,但缺实践,的确,我深深感觉到堆压在我们身上的理论太多了,而让我们放开手去干的机会很少。一个Java课程,一阵子就讲完一半(而且是基础知识),还没消化完就要直接进入核心技术,这根本就是填鸭!实践,实践,实践,我们需要实践,真真正正地去做,总比躲在一角落里啃书好,好像我自己,写代码之前,书里的知识已经很熟了,但一上手时,问题就蜂拥而至,结构不对,语法错误,逻辑错误,一时三刻都解决不了。由此可见,是书本好还是动手好呢?
-
今天写了个Java程序 - [身边事]
2008年04月06日
日历来的,花了我2个小时
import javax.swing.JOptionPane;
public class Calender {
public static void main(String[] args) {
//分别输入年份和1月1日是星期几
String yearString = JOptionPane.showInputDialog("输入年份(1900-2100):");
int year=Integer.parseInt(yearString);
String weekdayString = JOptionPane.showInputDialog("该年1月1日是星期几?\n"+
"输入“1”表示星期一,“2”表示星期二,如此类推(只能输入1-7的整数)");
int weekday=Integer.parseInt(weekdayString);
//weekdayNext变量为提示下一个月的首日的星期
int weekdayNext=1;
//定义日历的题目
String output_00 = "Calender of "+year;
output_00 +="\n____________________________________\n";
//用month数组储存月份及其名字
String[] Months = new String[13] ;
for (int i_m=1;i_m<=12;i_m++)
Months[i_m]=i_m+"月";
//用output数组储存各月份的日历
String[] output = new String[13] ;
//检查闰年
int runyear=1;
if ((year%4==0&&year%100!=0)||year%400==0)
runyear=29;
else
runyear=28;
//分别制作各月份的日历
for(int m=1;m<=12;m++){
switch (m)
{
case 1://输入月的标题
output[m]+=" "+Months[m]+" "+"\n_______________________________________\n"+
"MON TUE WED THU FRI SAT SUN\n";
//通过weekday变量确定首日的位置
if (weekday>1)
{for (int i_sp=2;i_sp<=weekday;i_sp++)
output[m]+=" ";}
//分别输入各日子
for (int i=1;i<=31;i++){
if (i<9)
{if ((weekday+i-1)%7==0)
output[m]+=i+" \n";
else
output[m]+=i+" ";}
else if (i==9)
{if ((weekday+i-1)%7==0)
output[m]+=i+" \n";
else
output[m]+=i+" ";}
else
{if ((weekday+i-1)%7==0)
output[m]+=i+" \n";
else
output[m]+=i+" ";}
}
//计算下一个月首日的位置
weekdayNext=((31-(8-weekday))%7)+1;
break;
case 2://输入月的标题
output[m]+="\n "+Months[m]+" "+"\n_______________________________________\n"+
"MON TUE WED THU FRI SAT SUN\n";
//通过weekdayNext变量确定首日的位置
if (weekdayNext>1)
{for (int i_sp=2;i_sp<=weekdayNext;i_sp++)
output[m]+=" ";}
//分别输入各日子
for (int i=1;i<=runyear;i++){
if (i<9)
{if ((weekdayNext+i-1)%7==0)
output[m]+=i+" \n";
else
output[m]+=i+" ";}
else if (i==9)
{if ((weekdayNext+i-1)%7==0)
output[m]+=i+" \n";
else
output[m]+=i+" ";}
else
{if ((weekdayNext+i-1)%7==0)
output[m]+=i+" \n";
else
output[m]+=i+" ";}
}
//计算下一个月首日的位置
weekdayNext=((runyear-(8-weekdayNext))%7)+1;
break;
case 3: case 5: case 7: case 8: case 10: case 12:
//输入月的标题
output[m]+="\n "+Months[m]+" "+"\n_______________________________________\n"+
"MON TUE WED THU FRI SAT SUN\n";
//通过weekdayNext变量确定首日的位置
if (weekdayNext>1)
{for (int i_sp=2;i_sp<=weekdayNext;i_sp++)
output[m]+=" ";}
//分别输入各日子
for (int i=1;i<=31;i++){
if (i<9)
{if ((weekdayNext+i-1)%7==0)
output[m]+=i+" \n";
else
output[m]+=i+" ";}
else if (i==9)
{if ((weekdayNext+i-1)%7==0)
output[m]+=i+" \n";
else
output[m]+=i+" ";}
else
{if ((weekdayNext+i-1)%7==0)
output[m]+=i+" \n";
else
output[m]+=i+" ";}
}
//计算下一个月首日的位置
weekdayNext=((31-(8-weekdayNext))%7)+1;
break;
case 4: case 6: case 9: case 11:
//输入月的标题
output[m]+="\n "+Months[m]+" "+"\n_______________________________________\n"+
"MON TUE WED THU FRI SAT SUN\n";
//通过weekdayNext变量确定首日的位置
if (weekdayNext>1)
{for (int i_sp=2;i_sp<=weekdayNext;i_sp++)
output[m]+=" ";}
//分别输入各日子
for (int i=1;i<=30;i++){
if (i<9)
{if ((weekdayNext+i-1)%7==0)
output[m]+=i+" \n";
else
output[m]+=i+" ";}
else if (i==9)
{if ((weekdayNext+i-1)%7==0)
output[m]+=i+" \n";
else
output[m]+=i+" ";}
else
{if ((weekdayNext+i-1)%7==0)
output[m]+=i+" \n";
else
output[m]+=i+" ";}
}
//计算下一个月首日的位置
weekdayNext=((30-(8-weekdayNext))%7)+1;
break;
}
}
//用outputFinal储存日历标题和各月日历
String outputFinal = output_00;
for (int i_f=1;i_f<=12;i_f++)
outputFinal += output[i_f];
//输出日历
JOptionPane.showMessageDialog(null,outputFinal);
}
}








