JAVA快速入门练习(精品).docx

上传人:太** 文档编号:63268593 上传时间:2022-11-24 格式:DOCX 页数:24 大小:63.62KB
返回 下载 相关 举报
JAVA快速入门练习(精品).docx_第1页
第1页 / 共24页
JAVA快速入门练习(精品).docx_第2页
第2页 / 共24页
点击查看更多>>
资源描述

《JAVA快速入门练习(精品).docx》由会员分享,可在线阅读,更多相关《JAVA快速入门练习(精品).docx(24页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、第2章实验-JAVA根本语法1(1)算术运算符、算术表达式(2)布尔及关系算符和表达式(3) if/else控制结构(4) while循环语句(5)练习使用对话框在上一章的实验中所看到的程序都是顺序执行的。本章实验教程将介绍如何使用JAVA选择控制 语句,使程序能基于条件进行判断,从而选择执行相应的逻辑分支。以下的实验包括4种类型,每种类型都用括号里面的字母表示:D -例程,表示这是一个例子,要求练习者阅读指南和代码;I-交互式练习,练习者完成实验指定的简单任务,如修改局部代码,观察程序运行时的变化等;W -热身练习,练习者的编程工作量逐渐加大。P -完整编程,要求练习者根据要求,完成完整的J

2、AVA程序。从本实验教程光盘中拷贝Lab02文件目录到本地磁盘,如C:盘。Lab02文件目录中将包含本次 实验所需的所有资料。Lab02的相关资料也可以从本实验教程的网站下载。实验任务实验:(D)运行四个Java程序在已经安装 的电脑上编译、运行4个JAVA程序Int、和,观察程序的运行结果。在这四个 程序中,运用了另外一种键盘读入的形式JOptionPane对话框。这种图形界面对用户来讲比命令行的 数据输入方式更友好。用记事本或EditPlus翻开这几个程序,比拟程序源代码。、 和 都是按照这样的步骤执行的:(1)提示用户输入数字。这些数字是以字符串的形式 被读取,而后又被转换成数字;(2)

3、适当的运算;(3)输出显示。见程序清单2-1包括以下的语句:int totalSeconds = Integer.parselnt(JOptionPane.showInputDialog(/将String型转换为int型number 1 = Integer.parselnt( argsO);number2 = Integer.parselnt( args| 1 );/初始化输出为空字符串 result =,n;/进行比拟if ( numberl = number!) result = numberl + = + number2;if ( numberl != number2 )result 二

4、 numberl + != + number2;if ( numberl number2 )result = result + ”n” + numberl + “ = number!)result = result + nnn + numberl + ” = + number2;if ( numberl number?)result = result + nnn + numberl + ” + number2;if ( numberl = number!)result = result + ”n” + numberl + ” jauac DigitParts.jauaC-Lab02jaua D

5、igitParts 365 365分离后的结果是3 6 5图2.1实验运行结果例如实验:(P)编写程序DigitParts为DigitParts. java保存一个副本,命名为DigitPart。在后一个文件里,相应地修改类名和注 释。修改DigitPart,当用户的输入不是三位数时如45, 4258),程序会显示用户友好的错误提示 信息。当然,如果用户没有正确输入命令行参数,这个程序也应该显示用户友好的的错误提示信息。实验:(W) JAVA中符号+的使用编译并运行Plus, java,然后用记事本翻开它,这个程序在DOS窗口输出:683667852程序清单 2-10: Plus. java/

6、 Plus.java/演示加法和字符串连接public class Plus public static void main(String args)System.out.println(23 + 45 + ” 366 ” + 78 + 52); / method main / class PlusJAVA语言中,加号“+可以用做加法运算(当它出现在两个数字之间),也可以用做字符串的 连接当它出现在两个字符串之间,或者在一个字符串和一个数字之间。在这种情况下,数字会被自 动转换成字符串然后和另一个字符串连接)。Plus, java程序中System. out. printin语句里的四个加号按

7、照从左到右的顺序被依次定义。最左 端的加号是加法运算,因为它出现在两个整数之间;第二个加号是字符串连接运算,因为它出现在一个 数学表达式23 + 45和字符串“ 366 ”之间;第三个加号是字符串连接运算,因为它出现在字符 表达式23 + 45 + “ 366 ”也就是“68 366”和正整数78之间。最右边的加号是字符串连接运算, 因为在它左边所有的表达式在第四个加号未定义之前已经运算并生成了字符串“68 366 78” 。最终 生成的字符串为“68366 7852和代数运算一样,在表达式中加括号可以改变运算的顺序。为Plus. java保存一个副本,命名 为MyPlus. java,在源代

8、码中只插入两个括号,使程序输出成为:68366130除了参加两个括号之外,代码不要做任何其他的修改。实验:(I)浮点数的比拟.编译和运行程序,使用三个浮点数类型的命令行参数,这个程序会找出这三个数中最大的那个数。程序清单271 : /public class Comp3Flo public static void main( String args) if ( args.length number?) largest = numberl;elselargest = number2;if ( number3 largest) largest = number3;System, out. prin

9、tin(数字” + numberl+ , + number2+ ”,和+ number3+ ” 的最大数为 “ +largest+ / method main / class Comp3Flo如果输入没有小数点的命令行参数,这些参数会被自动的转换成浮点数,然后用小数点的形式显 示出来。例如,C:LabO2java Comp3Flo 614.2数字6.0, 1.0,和的最大数为.最小的数,中间的数,最大的数)z x)z 1 2 3 4 5 6 z(x z( z( z( z/l z(用不同的输入测试这个程序。测试3个不同数字的6种不同组合: 最小的数,最大的数,中间的数 中间的数,最小的数,最大的

10、数 中间的数,最大的数,最小的数 最大的数,最小的数,中间的数 最大的数,中间的数,最小的数即使三个数字中有两个或两个以上的数字相等时,程序也可以正确地找出最大的数字。仔细阅读 这个程序,理解程序中每一行代码的意义。找出三个数字中最大数的关键代码如下:float largest;if ( numberl number2 )largest = numberl;elselargest = number2;if ( number3 largest ) largest = number3;第一行代码只声明(declare) 了变量largest,并没有给largest变量赋初始值。largest变量的

11、初始值是由if/else结构中条件numberl number2决定的。如果numberl大于number2, 执行初始赋值语句largest=numberl,变量largest的初始值等于numberl;反之,变量largest 的初始值等于number2o.为保存一个副本,命名为My。修改My源码的类名和注释,编译程序,确保程序正确运行。修改My源码。在变量largest声明前加上注释,在if/else结构中声明变量并同时对其赋初 值。修改后的代码段如下:/ float largest;if ( numberl number2 )float largest = numberl;elsefl

12、oat largest = number2;试着编译修改后的程序。显然,编译不会通过。这是由于变量largest在赋初值前只能声明一 次。1 .修改My源码,使之能正确编译。程序编译通过后,进一步修改源码。用一对if结构代替if/else结构,修改后的代码段如下: float largest;if ( numberl number2 )largest = numberl;if ( numberl largest)A1错误编译错误的原因在于编译器(Compiler) 无法识别条件 numberlnumber2 是条件 numberl (二number2的否认条件。因此,编译器认为可能在某种情况下

13、,这两个布尔表达式都为false。当变 量 largest 在if ( number3 largest )语句中使用时,两个初始赋值语句可能都没有执行,变量largest可能尚未初始化。2 .目前对变量初始化问题的讨论只局限于方法里的局部变量。在完成的实验中,main方法里定义的变量都是局部变量。对于这种类型的变量,必须明确地进行 初始化。如果在没有初始化之前就试图使用它,程序就无法编译。如果初始化的语句在if块中,必 须要让变量在第一次使用前能够得到赋值。也就是说,把初始化语句放在只有if块的条件判断语句 中编译不能通过,因为执行的时候可能不符合if后面的判断条件,如此一来初始化语句就不会被

14、执 行了,从而违反了局部变量使用前必须初始化的规定。但如果使用if/else结构并且在每个分支中都有初始化语句,程序就可以通过编译,因为无论如 何,总有至少一条初始化语句会被执行,不会发生使用前未被初始化的情况。实验:(P)编写程序Comp4FIo.java程序使用四个浮点数为命令行参数,并找出这四个数中的最大数和最小数。程序的执行和输出 如下:C;LabO2java Comp4Flo 4312在数字4.0, 3.0, 1.0,和2.0中,最大值为4.0,最小值为1.0.如果用户输入的参数少于四个,程序将输出用户友好的错误提示信息。由于4个不同数字的排列组合方式有24种可能。为了便于程序的测试

15、,使用批处理文件 Comp4Flo. bato扩展名为.bat的文件是批处理文件,它是无格式的文本文件,包含一条或多条命令。在DOS命 令提示窗口中键入批处理文件的名称,系统就会按照该文件中各个命令出现的顺序来逐个运行它们。 使用批处理文件也被称为批处理程序或脚本),可以简化日常或重复性任务。Comp4Flo. bat批处理文件位于Lab02目录下,在DOS命令提示窗口中,执行:C:Lab02Comp4Flo程序清单 2-12: Comp4F I o. batjava Comp4Flo 12 3 4java Comp4Flo 12 4 3java Comp4Flo 13 2 4 pauseja

16、va Comp4Flo 13 4 2java Comp4Flo 14 2 3java Comp4Flo 14 3 2 pausejava Comp4Flo 2 13 4java Comp4Flo 2 14 3java Comp4Flo 2 3 14 pausejava Comp4Flo 2 3 4 1java Comp4Flo 2 4 13java Comp4Flo 2 4 3 1 pausejava Comp4Flo 3 1 24java Comp4Flo 3 14 2java Comp4Flo 3 2 14 pausejava Comp4Flo 3 2 4 1java Comp4Flo 3

17、 4 12java Comp4Flo 3 4 2 1 pausejava Comp4Flo 4 12 3java Comp4Flo 4 13 2java Comp4Flo 4 2 13pausejava Comp4Flo 4 2 3 1java Comp4Flo 4 3 12java Comp4Flo 4 3 2 1 pausejava Comp4Flojava Comp4Flojava Comp4Flo pausejava Comp4Flojava Comp4Flojava Comp4Flo实验:(D)简单介绍Deci ma I Format的用法编译、运行,查看源代码。DecimalFor

18、mat用于格式化十进制数字。具体的使用步骤: (1)创立对象DecimalFormat,关键代码如下:DecimalFormat df2 = new DecimalFormat(n 0.00 n);DecimalFormat df3 = new DecimalFormat(0.000);(2)使用DecimalFormat对象,关键代码如下:System.out.printin(nfloat + “ + nSystem.out.printin( double + “ + nx和y分别是float和double类型的变量。 节,只需要知道如何使用就可以了。” + df2.format(x) +

19、df3.format(x) + x);+ df2.format(y)+ df3.format(y)+ y);目前我们不必理解对象DecimalFormat工作的细程序清单 2-13: Dec ima IFormatDemo. javaimport java.text.DecimalFormat;public class DecimalFormatDemo public static void main(String args) DecimalFormat df2 = new DecimalFormat(,0.00n);DecimalFormat df3 = new DecimalFormat(

20、n0.000H);float x = 2.0f / 3;double y = 2.0 / 3;System.out.println();System. out.println(类型 两位 三位”+ ” 全部位)System.out.printlnO;System.out.println(nfloat+ df2.format(x) + df3.format(x)” +x);System.out.printlnCdouble + df2.format(y)+ df3.format(y)+ y); / method main/ class DecimalFormatDemo实验:(D) wh i I

21、 e循环语句编译、运行程序。输出从1到命令行参数之间的所有整数之和。例如,键入命令行参数5,程序 将会输出1 + 2 + 3 + 4 + 5的和也就是15o程序清单2T4:/求1到N的和,N作为命令行参数输入public class SumNumber public static void main(String args) if ( args.length = 0 ) System. out. print(此程序将打印出1到)(之间的所有数之和,”);System.out.print(nN是一个为命令行参数)System, out. printing 的正整数 J);System.exit(

22、O); / ifint n = Integer.parseInt(argsO);int sum = 0;int count = 0;while ( count n ) count = count + 1; sum = sum + count; / whileSystem, out. printin(从 1 至+ n + ” 的和是:” +sum+ / method main/ class SumNumber为了实现程序的要求必须把数字进行累加。在JAVA这样的高级编程语言中,重复是用循环实现 的。在记事本中翻开,注意以下几行语句:int n = Integer.parselnt(args0);

23、int sum = 0;int count = 0;while ( count n )count = count + 1; sum = sum + count; / while一个while循环包括关键字while,后面圆括号里的布尔表达式(被称作条件),以及一条或多条陈 述语句。其格式为:while (expression) statement(s)只要条件为ture,陈述语句就被反复执行。执行的陈述语句被称作循环体,如果循环体只有一个 语句,那么while的可以省略不写。假设条件开始就是false,那么循环体内的语句永远不会执行。程序循环体中的语句:count = count + 1;给变

24、量count上次的值加1,计算出循环体被执行的次数。当count的值到达n时,count n 条件不成立,表达式为false,循环终止。为了得到从1到n累加的和,程序每一次循环都把当前的count值加到变量sum表示的累计和 中,累计和在循环开始时被初始化为0o执行累加的语句如下:sum = sum + count;一定要理解if语句 和while循环语句的不同。if和while都是后面圆括号里的条件为true 时执行相关的陈述语句。if结构里面的语句执行一次,而while循环体中的语句被重复执行直到该 循环的条件为false时终止。使用while循环语句要注意的五个方面:(1) while后

25、面要包括一个条件,这个条件是一个布尔表达式,其值或真或假。这个条件通常用 于检查一个或多个变量的值。(2) while条件中的变量一定要在while循环开始前被赋值。这叫做初始化变量。初始化可以在 变量声明时进行,也可以在一个独立的陈述语句中进行。(3) while条件中变量的值一定要在while循环体里的某处改变,使得循环条件最终变成false; 否那么,会产生无限循环(infinite loop),程序无法终止。(4)当循环体里包含多条语句时,必须用 来表示循环体的起始和结束;如果循环体只有一条 语句,可以省略。(5)无论是否使用 ,循环体需要缩排。缩排对程序的可读性非常重要,但不会影响程

26、序的实 际运行。HEnter total seconds (integer)” );这个语句可以看作是以下两个语句的缩写:String totalSecondsText = JOptionPane.showInputDialog(Enter total seconds (integer)” :int totalSeconds = Integer.parselnt(totalSecondsText);程序清单27 : /将总秒数转换为分钟和剩余秒数import javax.swing. JOptionPane;public class MinSec public static void main

27、( String args ) JOptionPane.showMessageDialog( null, ”将输入总秒数n” + ”转换为相应的n” + ”分钟数和秒数。”);/读取总秒数:int totalSeconds = Integer.parselnt(JOptionPane.showInputDialog( ”输入总秒数(整数)”);/计算分钟和秒数int minutes = totalSeconds / 60;int seconds = totalSeconds % 60;/显小结果JOptionPane.showMessageDialog( null, totalSeconds

28、+ ” 秒等于 ” + minutes + 分钟加 ” + seconds + H 秒。”);System.exit( 0 );/ 结束程序 / method main / class MinSec程序清单2-2:/import javax.swing.JOptionPane;实验:(D)更多wh i I e循环例子编译并运行PowerColumns.java (不需要输入命令行参数)。源代码见程序清单215。程序清单 2-15: PowerColumns. java/ PowerColumns.java/显示在规定范围内两列2的鬲指数/演示while循环public class PowerC

29、olumns public static void main(String args)(System.out.println(n2 的幕指数”);System. out. printingnH);System. out. printin(指数基值)System, out. printingnn);int exponent = 0;int power = 1;while ( power 100000 ) System, out. printing + exponent + + power);exponent = exponent + 1;power = power * 2; / while /

30、method main / class PowerColumns程序在每次循环中用2乘以变量power来实现2的指数运算。变量power首先被初始化为1,当 第一次循环结束时它的值变为2o这里while循环的条件是:power 100000仔细检查程序并核实while循环是否符合上个实验中提到的五项要求。实验:(W)求输入浮点数的平均值.编译、运行PrintConrniandLine. java,输入任意个数的数字为命令行参数。不管你输入了哪一种 类型的多少个数字,程序会把输入的数字重新显示一遍。源代码见程序清单2-16。程序清单 2-16: PrintCommandLine.java/ Pr

31、intCommandLine.java/通过输出命令行参数来演示循环public class PrintCommandLine public static void main(String args) if ( args.length = 0 ) (此程序将重复命令行参数。 System.exit(O); /if(键入的是:);int index = 0;while (index argslargsn-1分别表示第1,第2 .第n个命令行参 数,等等。方括号里面的数字称为下标。下标可以是非负整数,也可以使用变量。当然,这个作为下 标的变量的值必须是非负整数。PrintCommandLine.

32、java程序中使用变量index为下标,每次循环下标变量值递增1,使得每一 次循环都能访问一个命令行参数。1 .注意while循环中语句的先后顺序,将原来的代码:System. out.print (n + args index);index = index + 1;改变为:index = index + 1;System.out.print( n + argsindex);重新编译和使用命令行参数运行程序,修改后的程序可以通过编译,但是运行会出现错误。将 MS-DOS窗口显示的错误信息写下来:键入的是: 2Exception in thread mainn: 2at PrintCommand

33、Line.main(printCommandLine.java: 16)执行第1次循环,变量index的值自增后为1, args index即args 1实际为第2个命令行参数 第1个命令行参数没有访问到);最后一次循环,访问的argsindex实际为第index+1个命令行 参数,而这样的参数并不存在,显示的错误信息提示数组下标越界了。这种类型的编程错误在循环语 句中很常见,也被称为。ff-by-1错误。3. 在Lab02文件夹里面,编写一个命令行应用程序AverageN. java。程序计算一列数字的平均值,这列数字以命令行参数的形式输入。例如,用户输入以下语句:java AverageN

34、 1234程序应该输出数字1, 2, 3, 4的平均值,也就是2. 5。程序应该能处理输入的任意多个命令 行参数。假设没有命令行参数输入,MS-DOS窗口将显示一个用户友好的提示信息。使用浮点数除法计算平均值,平均值要精确到小数点后一位。提示:使用DecimalFormat格式 化数字。例如,用以下语句运行:java AverageN 112输出应该是:The average is 1.3.防止在程序中出现无限循环,MS-DOS下使用Ctrl-C键按住Ctrl键不放,同时按下C键) 可以强行终止程序。实验计算银行本金连同利息之和到达本金的2倍时要多少年。程序可以接受两个命令行参数,这两个 参数

35、分别是的double和float类型,第一个数字表示银行本金,第二个数字表示年利率。假设使用 复利(复利就是利生利、把每年的利息加上本金又作为下一年的本金),同时假设没有取款和存 款的情况发生。假设用户没有恰当输入命令行参数,程序应该显示用户友好的提示信息。实验:(D)嵌套的if/else语句if/else语句中,if或else的语句块中还可以嵌套if/else语句。这提高了编程的灵活,同时 也容易使程序变得非常混乱。缩排的使用对编写这样的代码非常重要。if/else结构越大越复杂,错误的缩进格式越有可能导 致错误的判断。对于复杂的if/else语句,即使采用了正确的缩进格式,程序的逻辑看起来

36、可能也不 是很明显。如果一组if/else语句看起来有些复杂,在编写程序时,应总是使用括号,使代码更 清晰。编译、运行PluglfElseDemo. java程序。用不同的参数进行测试,这些数字包括0、T、1000和 1001o PluglfElseDemo. java 中的嵌套 if/else 结构:if ( number = 0 )System. out.printin (number + ” 是界于。至U 1000 之间。n);elseSystem. out. printin (number + 、于 0。 );elseSystem. out.printin (number + ” 大于

37、 1000。 n);这里没有用括号,编译器会自动地把每个else与它前面最近的那个if配对。下面这种if/else语句嵌套可以产生同样的输出:if ( number 1000 )System. out.printin (number + ” 大于 1000。);elseif ( number 0 )System. out. printin (number + ” 1000 )System. out.printin (number + ” 大于 1000。 n);else if ( number 0 )System, out .printin (number + 、于 0。 H);elseSys

38、tem. out.printin (number + ” 是界于。至!J 1000 之间。n);程序清单 2-17 : PluglfElseDemol.java/ PluglfElseDemo/ Demonstrates nested if7else with/ indentation to show the nesting.public class PluglfElseDemo 1 public static void main(String args) if ( args.length = 0 ) System, out. print(此程序判断一个);System. out. println(作为命令行参数输入,!);System. out. print。的浮点数是否界于)System.out.println(nO 到 1000 之间.); System.exit(O); / iffloat numbe

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 解决方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com