《JAVA快速入门练习.doc》由会员分享,可在线阅读,更多相关《JAVA快速入门练习.doc(29页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第2章 实验 JAVA基本语法12.1实验目标(1) 算术运算符、算术表达式(2) 布尔及关系算符和表达式(3) if/else控制结构(4) while循环语句(5) 练习使用对话框2.2实验说明 在上一章的实验中所看到的程序都是顺序执行的。本章实验教程将介绍如何使用JAVA选择控制语句,使程序能基于条件进行判断,从而选择执行相应的逻辑分支。以下的实验包括4种类型, 每种类型都用括号里面的字母表示:D - 例程, 表示这是一个例子, 要求练习者阅读指南和代码; I - 交互式练习, 练习者完成实验指定的简单任务,如修改部分代码, 观察程序运行时的变化等; W - 热身练习, 练习者的编程工作
2、量逐渐加大。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对话框。这种图形界面对用户
3、来讲比命令行的数据输入方式更友好。用记事本或EditPlus 打开这几个程序,比较程序源代码。 IntDiv.java、 FloDiv.java、 DouDiv.java 和MinSec.java 都是按照这样的步骤执行的:(1) 提示用户输入数字。 这些数字是以字符串的形式被读取,而后又被转换成数字; (2) 适当的运算;(3) 输出显示。 MinSec.java (见程序清单2-1)包括以下的语句:int totalSeconds = Integer.parseInt( JOptionPane.showInputDialog( Enter total seconds (integer) )
4、; 这个语句可以看作是以下两个语句的缩写:String totalSecondsText = JOptionPane.showInputDialog( Enter total seconds (integer) ); int totalSeconds = Integer.parseInt(totalSecondsText);程序清单2-1:MinSec.java / MinSec.java/ 将总秒数转换为分钟和剩余秒数 import javax.swing.JOptionPane; public class MinSec public static void main( String arg
5、s ) JOptionPane.showMessageDialog( null, 将输入总秒数 n + 转换为相应的 n + 分钟数和秒数 。 ); / 读取总秒数 : int totalSeconds = Integer.parseInt( JOptionPane.showInputDialog( 输入总秒数 (整数) ); / 计算分钟和秒数 int minutes = totalSeconds / 60; int seconds = totalSeconds % 60; / 显示结果 JOptionPane.showMessageDialog( null, totalSeconds +
6、秒等于 + minutes + 分钟加 + seconds + 秒。 ); System.exit( 0 ); / 结束程序 / method main / class MinSec 程序清单2-2:IntDiv.java / IntDiv.javaimport javax.swing.JOptionPane; public class IntDiv public static void main( String args ) / 从用户处得到一个字符串型的数字 String dividendText = JOptionPane.showInputDialog( 输入被除数 (整数) ); /
7、 再从用户处取得一个字符串型的数字 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.showM
8、essageDialog( null, dividend + 除以 + divisor + 等于n + quotient + 再加余数 + remainder + ., 结果, 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( Stri
9、ng args ) /从用户处得到一个字符串型的数字 String dividendText = JOptionPane.showInputDialog( 键入被除数 (浮点数) ); /再从用户处取得一个字符串型的数字 String divisorText = JOptionPane.showInputDialog( 键入除数(浮点数) ); /将类型String转换为类型float float dividend = Float.parseFloat( dividendText ); float divisor = Float.parseFloat( divisorText ); /进行除运
10、算 float quotient = dividend / divisor; /显示结果 JOptionPane.showMessageDialog( null, dividend + 除以 + divisor + 等于n + quotient + ., 结果, JOptionPane.PLAIN_MESSAGE ); System.exit( 0 ); /结束程序 / method main / class FloDiv程序清单2-4:DouDiv.java / DouDiv.java/ 演示double型的浮点数除法 import javax.swing.JOptionPane; publ
11、ic class DouDiv public static void main( String args ) /从用户处得到一个字符串型的数字 String dividendText = JOptionPane.showInputDialog( 键入被除数(浮点数) ); /再从用户处取得一个字符串型的数字 String divisorText = JOptionPane.showInputDialog( 键入除数(浮点数) ); / 将类型String转换为类型double double dividend = Double.parseDouble( dividendText ); doubl
12、e divisor = Double.parseDouble( divisorText ); /进行除运算 double quotient = dividend / divisor; / 显示结果 JOptionPane.showMessageDialog( null, dividend + 除以 + divisor + 等于n + quotient + ., 结果, JOptionPane.PLAIN_MESSAGE ); System.exit( 0 ); / 结束程序 / method main / class DouDiv实验2.4.2: (D)if选择语句编译MinSecWithIf
13、.java,使用如下命令运行程序:java MinSecWithIf 100注意使用的命令不是java MinSecWithIf观察程序的运行结果,并尝试用其他的正整数来执行。在类名MinSecWithIf后面键入的数字被称做命令行参数。在这个程序中,该命令行参数是总秒数。试着不使用命令行参数来运行这个程序,并观察运行结果。打开MinSecWithIf.java源代码,与MinSec.java源代码相比较。在MinSecWithIf.java中,命令行输入是由语句:int totalSeconds = Integer.parseInt(args0)实现的;在MinSec.java中,输入是通过
14、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 / 读
15、取总秒数 int totalSeconds = Integer.parseInt(args0); / 计算分钟和剩余秒数 int minutes = totalSeconds / 60; int seconds = totalSeconds % 60; / 显示结果 System.out.println( totalSeconds + 秒等于 + minutes + 分钟加上 + seconds + 秒. ); / method main / class MinSecWithIf 对于这种形式的IF语句,格式为: if (expression) statement(s) 该语句必须以关键字“i
16、f”开始。之后,括号中为布尔表达式。该布尔表达式必须计算出一个true或者false值。在本实验中,我们检查用户命令行参数的输入。当没有命令行参数输入时,表达式args.length = 0的运算结果为true,程序执行花括号中的语句(我们把花括号之间的语句部分称为块block),从而打印出一些提示信息,然后程序退出;当有命令行参数输入时,布尔表达式的值为false,程序忽略块中的语句,直接执行块后面的语句。实验2.4.3: (W)练习使用if语句在Lab02文件夹里,新建一个FeetInches.java文件。这个程序将总英寸转化成英尺和英寸(1英尺12英寸)。和MinSec.java类似,
17、程序FeetInches.java使用一个输入对话框来提示输入,结果的输出则使用消息对话框。 编写的程序请使用恰当的变量名,注释和输出。强烈建议读者一句一句自己编写代码,而不仅仅是复制、粘贴和修改变量名以及注释。通过这种方式,可以对Java 程序的基础有一个全面的熟悉,并增强在今后各种JAVA考试中的信心。注意缩排!JAVA编程规范要求每一个缩排要留个空格,不是一个。用空格键(Space Key),而不是制表键(Tab Key),因为制表键所表示的空格数会因文件编辑器的不同而不同。为了减轻缩排的麻烦,我们通常会在输入一个开括号后立即输入闭括号,然后输入括号里面的语句;而不是等完成括号里面的语句
18、输入后再输入闭括号。任何使用对话框的程序都包括语句:System.exit(0);没有这条语句,包含对话框的程序执行到末尾时不会自动结束。在这种情况下要重新获得DOS窗口的控制,使用Ctrl-C键(按住Ctrl键,然后在按住Ctrl键的同时按下C键)。实验2.4.4: (D)更多if语句编译、运行程序BusDialog.java和 Bus.java,一定要理解程序是如何实现的。这两个程序分别使用了对话框和命令行参数,它们都用于计算运送给定数目的乘客所需的车辆数。程序首先计算初步的数目(总人数除以每辆汽车的座位数),然后检查余数是否为,也就是是否有剩余的乘客。如果是,除了初始估计外,还多需要一辆
19、车。程序清单2-6:BusDialog.java / BusDialog.java/ 计算有固定座位数的车在给定乘客数的情况下所需的辆数 import javax.swing.JOptionPane; public class BusDialog public static void main( String args ) / 声明此程序的作用: JOptionPane.showMessageDialog( null, 计算有固定座位数的车n + 在给定乘客数的情况下,n + 所需的辆数. ); / 从用户处得到输入数据 int totalPeople = Integer.parseInt(
20、JOptionPane.showInputDialog( 键入总人数 (整数) ); int seatsPerBus = Integer.parseInt( JOptionPane.showInputDialog( 键入每辆车的座位数 (整数) ); / 计算所需车辆数 int bussesNeeded = totalPeople / seatsPerBus; if ( totalPeople % seatsPerBus 0 ) bussesNeeded = bussesNeeded + 1; / 显示结果 JOptionPane.showMessageDialog( null, busses
21、Needed + 辆座位为 + seatsPerBus + 的车 n + 可以运送 + totalPeople + 个人 ); System.exit( 0 ); / 终止程序 / method main / class Busses程序清单2-7:Bus.java / Bus.java/计算有固定座位数的车在给定命令行参数个乘客数的情况下所需的辆数 public class Bus public static void main( String args ) if ( args.length 0 ) bussesNeeded = bussesNeeded + 1; / 显示结果 System
22、.out.println( bussesNeeded + 辆座位为 + seatsPerBus + 的车可以 n + 运送 + totalPeople + 的人 。 ); System.exit( 0 ); / 终止程序 / method main / class Bus实验2.4.5: (W)练习使用if语句在Lab02文件夹里面,新建一个NearYuan.java的文件,它会以对话框的形式提示用户输入一个数字,这个数字表示分,程序会计算出与分价值最接近的整数元。例如:350分最接近4元,而249分最接近2元。实验2.4.6: (D)否定条件编译Compare.java,使用两个命令行参数运
23、行程序:java Compare 4 7该程序的条件语句中使用了否定条件(Negation)。一个条件的否定条件总是:(1)正确的,如果原条件是错误的; (2)错误的,如果原条件是正确的。例如, number1 = number2是 number1 number2不是上面第二个条件的否定条件, 因为当number1和number2相等时这两个条件都是错误的。类似的,条件number1 = number2不是条件 number1 = number2的否定条件,因为当两个数字相等时这两个条件都是正确的。对于条件number1 = number2,两个等号符号表示简单的“等于”,我们使用双等号符号来
24、检验两个表达式是否相等,而一个等号是给一个变量赋值。对于条件 number1 != number2,惊叹号后面接一个等号的意思是“不等于”,很明显,这个条件否定了前一个条件(number1 = number2)。用不同的整数对运行这个程序,这几个整数对包括以下情形:(1)第一个数小于第二个数;(2)第一个数大于第二个数;(3)第一个数等于第二个数。在每种情况中,程序都会显示正确的比较结果。程序清单2-8:Compare.java public class Compare public static void main( String args ) if ( args.length 2 ) Sy
25、stem.out.print(此程序将显示两个 ); System.out.println(作为命令行参数输入的 ); System.out.print(整数的比较结果 ); System.out.println(运行此程序键入 :); System.out.println( java Compare int1 int2); System.out.print(使用整数值来替换 ); System.out.println(int1 和 int2.); System.exit(0); / if int number1, / 第一个比较的数 number2; /第二个比较的数 String resu
26、lt; / 存储输出的字符串 / 将String 型转换为int型 number1 = Integer.parseInt( args0 ); number2 = Integer.parseInt( args1 ); / 初始化输出为空字符串 result = ; / 进行比较 if ( number1 = number2 ) result = number1 + = + number2; if ( number1 != number2 ) result = number1 + != + number2; if ( number1 number2 ) result = result + n +
27、number1 + = number2 ) result = result + n + number1 + = + number2; if ( number1 number2 ) result = result + n + number1 + + number2; if ( number1 = number2 ) result = result + n + number1 + = + number2; / 显示结果 System.out.println(比较结果:n + result); / method main / class Compare实验2.4.7: (D)if/else语句 编译
28、、运行OddEven.java并测试不同的命令行参数(奇数和偶数)。程序清单2-9:OddEven.java / OddEven.java/ 测试数字是为奇数还是偶数 public class OddEven public static void main(String args) if ( args.length = 0 ) System.out.print(此程序将判断一正整数 ); System.out.println(是奇数还是偶数 .); System.out.print(键入作为命令行参数 ); System.out.println(的数字 .); System.exit(0);
29、/ if int number = Integer.parseInt(args0); if ( number % 2 = 0 ) / 如果数字为偶数 System.out.println(number + 为偶数 .); else System.out.println(number + 为奇数 .); / method main / class OddEven 对于这种形式的条件语句,格式为: if (expression) statements1 else statements2 该条件语句的布尔表达式为true时执行语句statements1,布尔表达式为false时执行语句stateme
30、nts2。不同于if语句,else语句不包含条件。通常,在Java程序中,else语句与前面离它最近的if语句相匹配。如OddEven.java程序中: if ( number % 2 = 0 ) / 如果数字为偶数 System.out.println(number + 为偶数 .); else System.out.println(number + 为奇数 .); 这个程序用一个数字是否可以被2整除来判断该数的奇偶性。被2除后,余数为0的数为偶数;余数为1的数则为奇数。程序中使用了if/else结构,根据if后面括号里的条件的真值来选择两种可能的行为。如果条件(number%2 = 0)是
31、正确的, 即该数被2除后,余数为0,则条件后的陈述语句被执行;否则, else后面的陈述语句被执行。 把 statements1 和 statements2 括在花括号 () 内通常是一个好习惯,这样更清楚,并可以避免无意中造成错误。这里对于if 和else的陈述语句可以不需要大括号,因为当条件正确时只有一条执行语句,而当条件错误时也只有另一条执行语句。假如在一种情况下要执行多于一条的语句,则需要用花括号括起来组成语句块(block)。实验2.4.8: (W)练习if/else语句为Compare.java 保存一个副本,命名为MyCompare.java。在后一个文件里,相应地修改类名和注释
32、。然后修改MyCompare.java,使用3个if/else结构代替6个if结构来实现和Compare.java一样的效果。编译MyCompare.java,用几组不同的数字对进行测试,这些数字对包括以下情形:(1)第一个数小于第二个数;(2)第一个数大于第二个数;(3)第一个数等于第二个数。在每种情况中,程序都要显示正确的比较结果。实验2.4.9: (P)编写程序HourMinSec.java程序要求使用命令行参数来读取一个正整数,这个整数表示总秒数,编写程序输出与总秒数相等的时-分-秒。如果程序无命令行参数输入,DOS窗口将显示一个用户友好的提示信息。提示:用整数除法和模运算,1小时=3
33、600秒。实验2.4.10: (P)编写程序DigitParts.java程序要求使用命令行参数来读取一个三位数,然后把这个三位数分离成单个的数字,最后把这些数字用空格分离的形式显示出来。例如,数字123 会被显示成 1 2 3。提示:用整数除法和模运算来分离数位上的数字。 运行结果示例如图2.1图2.1 实验2.4.10运行结果示例实验2.4.11: (P)编写程序DigitParts2.java为DigitParts.java 保存一个副本,命名为DigitParts2.java。在后一个文件里,相应地修改类名和注释。修改DigitParts2.java,当用户的输入不是三位数时(如45,
34、4258),程序会显示用户友好的错误提示信息。当然,如果用户没有正确输入命令行参数,这个程序也应该显示用户友好的的错误提示信息。实验2.4.12: (W)JAVA中符号“+”的使用 编译并运行Plus.java,然后用记事本打开它,这个程序在DOS窗口输出:68 366 7852程序清单2-10:Plus.java / Plus.java/ 演示加法和字符串连接 public class Plus public static void main(String args) System.out.println(23 + 45 + 366 + 78 + 52); / method main / c
35、lass PlusJAVA语言中,加号“+”可以用做加法运算(当它出现在两个数字之间),也可以用做字符串的连接(当它出现在两个字符串之间,或者在一个字符串和一个数字之间。在这种情况下,数字会被自动转换成字符串然后和另一个字符串连接)。 Plus.java程序中System.out.println语句里的四个加号按照从左到右的顺序被依次定义。最左端的加号是加法运算,因为它出现在两个整数之间;第二个加号是字符串连接运算,因为它出现在一个数学表达式 23 + 45 和字符串 “ 366 ”之间;第三个加号是字符串连接运算,因为它出现在字符表达式23 + 45 + “ 366 ” 也就是“68 366
36、”和正整数78之间。最右边的加号是字符串连接运算,因为在它左边所有的表达式在第四个加号未定义之前已经运算并生成了字符串“68 366 78” 。最终生成的字符串为“68 366 7852 “。和代数运算一样, 在表达式中加括号可以改变运算的顺序。 为Plus.java 保存一个副本,命名为MyPlus.java,在源代码中只插入两个括号,使程序输出成为: 68 366 130 除了加入两个括号之外,代码不要做任何其他的修改。实验2.4.13: (I)浮点数的比较1. 编译和运行Comp3Flo.java程序,使用三个浮点数类型的命令行参数,这个程序会找出这三个数中最大的那个数。程序清单2-11:Comp3Flo.java / Comp3Flo.javapublic class Comp3Flo public static void main( String args ) if ( args.length 3 ) System.out.print(此程序将找出); System.out.println(3个作为命令行参数输入); System.out.println(的浮点数中的最大值.); System.out.println(运行此程序键入: ); System.out.println( java Com