第2章 实验 – JAVA基本语法1
2.1实验目标
(1) (2) (3) (4) (5)
算术运算符、算术表达式 布尔及关系算符和表达式 if/else控制结构 while循环语句 练习使用对话框
2.2实验说明
在上一章的实验中所看到的程序都是顺序执行的。本章实验教程将介绍如何使用JAVA选择控制语句,使程序能基于条件进行判断,从而选择执行相应的逻辑分支。
以下的实验包括4种类型, 每种类型都用括号里面的字母表示: D - 例程, 表示这是一个例子, 要求练习者阅读指南和代码; I - 交互式练习, 练习者完成实验指定的简单任务,如修改部分代码, 观察程序运行时的变化等; W - 热身练习, 练习者的编程工作量逐渐加大。
P - 完整编程,要求练习者根据要求,完成完整的JAVA程序。
2.3实验准备
从本实验教程光盘中拷贝Lab02文件目录到本地磁盘, 如C: 盘。Lab02 文件目录中将包含本次实验所需的所有资料。 Lab02的相关资料也可以从本实验教程的网站下载。
2.4实验任务
实验2.4.1: (D)运行四个Java程序
在已经安装JAVA SDK 5.0 的电脑上编译、运行4个JAVA程序IntDiv.java、 FloDiv.java、DouDiv.java 和 MinSec.java,观察程序的运行结果。在这四个程序中,运用了另外一种键盘读入的形式JOptionPane对话框。这种图形界面对用户来讲比命令行的数据输入方式更友好。用记事本或EditPlus 打开这几个程序,比较程序源代码。 IntDiv.java、 FloDiv.java、 DouDiv.java 和MinSec.java 都是按照这样的步骤执行的:(1) 提示用户输入数字。 这些数字是以字符串的形式被读取,而后又被转换成数字; (2) 适当的运算;(3) 输出显示。
MinSec.java (见程序清单2-1)包括以下的语句:
1
int totalSeconds = Integer.parseInt(
JOptionPane.showInputDialog(
\这个语句可以看作是以下两个语句的缩写:
String totalSecondsText = JOptionPane.showInputDialog(
\ int totalSeconds = Integer.parseInt(totalSecondsText);
程序清单2-1:MinSec.java
// MinSec.java
// 将总秒数转换为分钟和剩余秒数
import javax.swing.JOptionPane;
public class MinSec {
public static void main( String[] args ) { JOptionPane.showMessageDialog( null,
\将输入总秒数 \\n\ \转换为相应的 \\n\ \分钟数和秒数 。\
// 读取总秒数 :
int totalSeconds = Integer.parseInt(
JOptionPane.showInputDialog( \输入总秒数 (整数)\
// 计算分钟和秒数
int minutes = totalSeconds / 60; int seconds = totalSeconds % 60;
// 显示结果
JOptionPane.showMessageDialog( null,
totalSeconds + \秒等于 \ minutes + \分钟加 \ seconds + \秒。\
System.exit( 0 ); // 结束程序 } // method main } // class MinSec
程序清单2-2:IntDiv.java // IntDiv.java
2
import javax.swing.JOptionPane;
public class IntDiv {
public static void main( String[] args ) {
// 从用户处得到一个字符串型的数字
String dividendText = JOptionPane.showInputDialog( \输入被除数 (整数)\
// 再从用户处取得一个字符串型的数字
String divisorText = JOptionPane.showInputDialog( \输入除数 (整数)\
// 将类型String转换为类型int
int dividend = Integer.parseInt( dividendText ); int divisor = Integer.parseInt( divisorText );
// 进行除运算
int quotient = dividend / divisor; int remainder = dividend % divisor;
// 显示结果
JOptionPane.showMessageDialog( null,
dividend + \除以 \等于\\n\ quotient + \再加余数 \ \结果\
JOptionPane.PLAIN_MESSAGE );
System.exit( 0 ); // 结束程序 } // method main } // class IntDiv 程序清单2-3:FloDiv.java
// FloDiv.java
// 演示浮点型的浮点数除法
import javax.swing.JOptionPane;
public class FloDiv {
public static void main( String[] args ) { //从用户处得到一个字符串型的数字
String dividendText = JOptionPane.showInputDialog( \键入被除数 (浮点数)\
//再从用户处取得一个字符串型的数字
3
String divisorText = JOptionPane.showInputDialog( \键入除数(浮点数)\
//将类型String转换为类型float
float dividend = Float.parseFloat( dividendText ); float divisor = Float.parseFloat( divisorText );
//进行除运算
float quotient = dividend / divisor;
//显示结果
JOptionPane.showMessageDialog( null,
dividend + \除以 \等于\\n\ quotient + \ \结果\
JOptionPane.PLAIN_MESSAGE );
System.exit( 0 ); //结束程序 } // method main } // class FloDiv 程序清单2-4:DouDiv.java
// DouDiv.java
// 演示double型的浮点数除法
import javax.swing.JOptionPane;
public class DouDiv {
public static void main( String[] args ) { //从用户处得到一个字符串型的数字
String dividendText = JOptionPane.showInputDialog( \键入被除数(浮点数)\
//再从用户处取得一个字符串型的数字
String divisorText = JOptionPane.showInputDialog( \键入除数(浮点数)\
// 将类型String转换为类型double
double dividend = Double.parseDouble( dividendText ); double divisor = Double.parseDouble( divisorText );
//进行除运算
double quotient = dividend / divisor;
4
// 显示结果
JOptionPane.showMessageDialog( null,
dividend + \除以 \等于\\n\ quotient + \ \结果\
JOptionPane.PLAIN_MESSAGE );
System.exit( 0 ); // 结束程序 } // method main } // class DouDiv
实验2.4.2: (D)if选择语句
编译MinSecWithIf.java,使用如下命令运行程序:
java MinSecWithIf 100 注意使用的命令不是
java MinSecWithIf
观察程序的运行结果,并尝试用其他的正整数来执行。在类名MinSecWithIf后面键入的数字被称做命令行参数。在这个程序中,该命令行参数是总秒数。试着不使用命令行参数来运行这个程序,并观察运行结果。
打开MinSecWithIf.java源代码,与MinSec.java源代码相比较。 在MinSecWithIf.java中,命令行输入是由语句:
int totalSeconds = Integer.parseInt(args[0]) 实现的;在MinSec.java中,输入是通过JOptionPane 对话框,而不是命令行参数实现的。
程序清单2-5:MinSecWithIf.java
// MinSecWithIf.java
// 将总秒数转换为相应的分钟数和剩余秒数
public class MinSecWithIf {
public static void main( String[] args ) { if ( args.length == 0 ) { // 声明程序将做什么 System.out.println(
\此程序将转换 \\n\ \一个总秒数为 \\n\
\相应的分钟和剩余秒数 .\\n\ \总秒数应当作为 \\n\ \命令行参数输入 .\\n\ System.exit(0); } // if
5