三、实验内容

(一)声明不同数据类型的变量

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 创建并显示日历界面