三、实验内容
(一)声明不同数据类型的变量
1.编写声明不同数据类型变量的程序文件
编写声明不同数据类型变量的程序文件KY2_1.java。源代码如下。
public class KY2_1 { public static void main(String args[]){ byte b=0x55; short s=0x55ff; int i=1000000; long l=0xffffL; char c='a'; float f=0.23F; double d=0.7E-3; String S="这是字符串类数据类型"; System.out.println("字节型变量b = "+b); System.out.println("短整型变量s = "+s); System.out.println("整型变量i = "+i); System.out.println("长整型变量l = "+l); System.out.println("字符型变量c = "+c); System.out.println("浮点型变量f = "+f); System.out.println("双精度变量d = "+d); System.out.println("布尔型变量B = "+B); System.out.println("字符串类对象S = "+S); } }
2.编译并运行程序
编译并运行该程序。
(二)了解变量的使用范围
1.创建KY2_2.java文件
通过本程序了解变量的使用范围,源代码如下。
public class KY2_2 { static int i=10; public static void main(String args[]){ { int k=10; System.out.println("i="+i); System.out.println("k="+k); } System.out.println("i="+i); System.out.println("k="+k); //编译时将出错,已超出k的使用范围 } }
2.编译KY2_2.java
此时会出现错误提示。因为变量k只在方法块中声明,在方法块之外它是不存在的,所以编译时会出错。
3.修改上面的程序
根据提示修改程序。
4.成功运行该程序
修改后运行该程序,直到运行成功。
【请思考】
KY2_2.java程序说明了什么问题?
(三)使用关系运算符和逻辑运算符
1.建立使用关系运算符和逻辑运算符的程序文件
源代码如下。
class KY2_3 { public static void main(String args[]){ int a=25, b=20, e=3, f=0; boolean d=a<b; System.out.println("a=25, b=20, e=3, f=0 ");
System.out.println("因为关系表达式a<b为假,所以其逻辑值为"+d); if (e! =0&&a/e>5) System.out.println("因为e非 0 且a/e为 8 大于 5,所以输出a/e= "+a/e); if (f! =0&&a/f>5) System.out.println("a/f = "+a/f); else System.out.println("因为f值为 0,所以输出f = "+f); } }
2.编译并运行该程序
编译并运行该程序直到成功。
(四)使用表达式语句与复合语句
1.建立包含表达式语句的程序
源代码如下。
class KY2_4{ public static void main(String[]args){ int k, i=3, j=4; k=20∗8/4+i+j∗i; System.out.println("表达式(20∗8/4+i+j∗i)="+k); } }
2.建立包含复合语句的程序
源代码如下。
class KY2_5{ public static void main(String args[]){ int k, i=3, j=4; k=i+j; System.out.println("在复合块外的输出k="+k); { float f; f=j+4.5F; i++;
System.out.println("在复合块内的输出f="+f); System.out.println("在复合块内的输出k="+k); } System.out.println("在复合块外的输出i="+i); } }
3.编译并运行上述两个源程序
对源代码进行编译并运行程序。
【请思考】
(1)将变量i定义在块内会怎样?改变其他变量的位置看看会发生什么变化。
(2)指出程序的复合结构以及变量的使用范围。
(五)使用选择语句
1.使用if...else语句
(1)程序功能:使用if...else语句构造多分支结构,例如,运用if...else语句判断某一年是否为闰年。闰年的条件是符合下面两个条件之一:能被4整除,但不能被100整除;能被400整除。
(2)编写源程序文件,代码如下。
public class KY2_6 { public static void main(String args[]){ boolean leap; int year=2005; if ((year%4==0&&year%100! =0)||(year%400==0))//方法 1 System.out.println(year+"年是闰年"); else System.out.println(year+"年不是闰年"); year=2008; //方法 2 if (year%4! =0) leap=false; else if (year%100! =0) else if (year%400! =0)
leap=false; else System.out.println(year+"年是闰年"); else System.out.println(year+"年不是闰年"); year=2050; //方法 3 if (year%4==0){ if (year%100==0){ if (year%400==0) else leap=false; } else leap=false; } else leap=false; System.out.println(year+"年是闰年"); else System.out.println(year+"年不是闰年"); } }
(3)编译运行程序。
【请思考】
本程序中有几个选择语句,哪些具有嵌套关系?
2.使用switch语句
(1)程序功能:在不同温度时显示不同的解释说明。
(2)程序源代码如下。
class KY2_7{ public static void main(String args[]){ int c=38; switch(c<10? 1:c<25? 2:c<35? 3:4){ case 1: System.out.println(" "+c+"℃ 有点冷。要多穿衣服。"); case 2: System.out.println(" "+c+"℃ 正合适。出去玩吧。"); case 3: System.out.println(" "+c+"℃ 有点热。"); default: System.out.println(" "+c+"℃ 太热了!开空调。"); } } }
(3)编译并运行程序。
(六)使用循环语句
1.for循环语句练习
(1)程序功能:按5摄氏度的增量打印出一个从摄氏温度到华氏温度的转换表。
(2)程序源代码如下。
class KY2_8{ public static void main (String args[]){ int h, c; System.out.println("摄氏温度 华氏温度"); for (c=0; c<=40; c+=5){ h=c∗9/5+32; System.out.println(" "+c+" "+h); } } }
(3)编译并运行程序。
2.while循环语句练习
(1)程序功能:运行程序后从键盘输入数字1、2、3后,可显示抽奖得到的奖品;如果输入其他数字或字符则显示“真不幸,你没有奖品!下次再来吧。”。
(2)程序源代码如下。
import java.io.∗; class KY2_9 { public static void main(String args[])throws IOException { char ch; System.out.println("按 1、2、3 数字键可得大奖! "); System.out.println("按空格键后回车可退出循环操作。"); while ((ch=(char)System.in.read())! ='') { System.in.skip(2); //跳过回车键 switch(ch){ case'1': System.out.println("恭喜你获得大奖,一辆汽车! "); break; case'2': System.out.println("不错呀,你得到一台笔记本电脑! "); break; case'3': System.out.println("没有白来,你得到一台冰箱! "); break; default: System.out.println("真不幸,你没有奖品!下次再来吧。"); } } } }
(3)编译源程序。
(4)在命令提示符窗口运行程序,然后分别输入1、2、3、r,记录结果。
3.do...while循环语句练习
(1)程序功能:求1+2+…+100之和,并将求和表达式与所求的和显示出来。
(2)程序源代码如下。
class KY2_10 { public static void main(String args[]){ int n=1, sum=0; do { sum+=n++; } while (n<=100); System.out.println("1+2+...+100 ="+sum); } }
(3)编译并运行程序。
4.多重循环练习
(1)输出九九乘法表的程序,源代码如下。
public class KY2_11 { public static void main(String args[]) { int i, j, n=9; System.out.print(" ∗ |"); for (i=1; i<=n; i++) System.out.print(" "+i); System.out.print("\n-------|"); for (i=1; i<=n; i++) System.out.print("----"); System.out.println(); for (i=1; i<=n; i++) {
System.out.print(" "+i+" |"); for (j=1; j<=i; j++) System.out.print(" "+i∗j); System.out.println(); } } }
(2)编译并运行程序。
(七)综合实例
1.计算学分绩点
使用Eclipse创建Java项目“sample2_1”,然后为该项目创建Java类“CalcXFJD”,并在该类的main方法中实现“计算学分绩点”功能。具体步骤如下:输入一个百分制成绩(若输入的成绩大于100,则要求用户重新输入),根据输入的成绩计算其学分绩点(计算公式参见表2-1)。程序可多次计算学分绩点,直到输入的成绩为负数。具体效果如图2-1所示。具体运行功能请参考样例程序CalcXFJD.class(先下载样例程序到C:\,然后进入MS-DOS环境,把当前目录切换到C:\,再通过命令“C:\>java CalcXFJD”运行该程序,并体会其功能)。
表2-1 学分绩点计算公式
图2-1 输入成绩计算绩点界面
2.查找质数并显示
使用Eclipse创建Java项目“sample2_2”,然后为该项目创建Java类“FindPrimes”,并在该类的main方法中实现“查找质数并输出”功能。具体功能如下:找出100~500所有的质数,并以5个一行显示,具体效果如图2-2所示。具体运行功能请参考样例程序FindPrimes.class(先下载样例程序到C:\,然后进入MS-DOS环境,把当前目录切换到C:\,再通过命令“C:\>java FindPrimes”运行该程序,并体会其功能)。
图2-2 查找并显示100~500的质数界面
3.显示某月日历
使用Eclipse创建Java项目“sample2_3”,然后为该项目创建Java类“MyCalendar”,并在该类的main方法中实现“显示某月日历”功能。具体功能如下:输入不小于1900的年份(若输入的年份不符合要求,则要求重新输入年份),再输入月份(若月份不符合要求,则要求重新输入月份),程序显示指定年份指定月份的日历。具体效果如图2-3所示。具体运行功能也可参考样例程序MyCalendar.class(先下载样例程序到C:\,然后进入MS-DOS环境,把当前目录切换到C:\,再通过命令“C:\>java MyCalendar”运行该程序,并体会其功能)。
图2-3 创建并显示日历界面