第三章 Java程序设计基础练习.docx

上传人:b****6 文档编号:7486607 上传时间:2023-01-24 格式:DOCX 页数:16 大小:97.65KB
下载 相关 举报
第三章 Java程序设计基础练习.docx_第1页
第1页 / 共16页
第三章 Java程序设计基础练习.docx_第2页
第2页 / 共16页
第三章 Java程序设计基础练习.docx_第3页
第3页 / 共16页
第三章 Java程序设计基础练习.docx_第4页
第4页 / 共16页
第三章 Java程序设计基础练习.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

第三章 Java程序设计基础练习.docx

《第三章 Java程序设计基础练习.docx》由会员分享,可在线阅读,更多相关《第三章 Java程序设计基础练习.docx(16页珍藏版)》请在冰豆网上搜索。

第三章 Java程序设计基础练习.docx

第三章Java程序设计基础练习

第3章程序设计基础

本章试验的任务主要是理解和掌握Java中简单的输入输出处理,程序设计的三种基本结构(顺序、选择和循环)。

其目的是掌握这些语句块的语法及构成,以能够在实际应用中灵活地运用它们。

3.1实验一:

基本输入输出语句的应用

1.实验目的

1)正确使用已存在类的方法,从键盘上输入数据;

2)掌握数据的接收、转换并正确使用的方法。

2.实验要求

1)根据数据的输入和输出,编写程序;

2)编译运行程序,分析程序及执行结果。

3.实验内容

实验示例3.1.1从键盘上任意输入一个字母,判断是大写还是小写。

实现该示例的步骤如下:

(1)根据题意,确定所要使用的对象,从键盘上输入数据可以使用System类in对象的read()方法,该方法是从系统的标准设备上读取数据,可能会引发输入输出错误,因此系统要求在程序编码中应有抛出和处理IO错误的代码。

(2)程序参考代码如下:

/*这是一个简单的Java示例程序

*功能是从键盘上接收一个字符,判断该字符是否是字母

*程序的名字为Practice3_1_1.java

*/

importjava.io.*;

publicclassPractice3_1_1

{

publicstaticvoidmain(Stringargs[])throwsjava.io.IOException

{

charc1;//定义字符变量c1

booleanl1;//定义布尔变量l1

c1=(char)System.in.read();//从键盘上接收一个字节数据赋给c1

l1=c1>='A'&&c1<='Z'||c1>='a'&&c1<='z';//判断输入的是否字母

System.out.println("c1="+c1+"是字母吗?

"+l1+"!

");

}

}

(3)程序及执行结果分析

在程序中使用System.in.read()方法从键盘上输入获取数据,获取的数据是以输入字符ASCII码的整数表示,例如字符A的ASCII码为65,字符0的ASCII码为48等等。

要将它赋给字符变量,必须进行(char)强制转换。

使用了布尔值真(ture)、假(false)来表示是否字母。

实验示例3.1.2从键盘上两次输入同一个6位及6位以上的验证码,若两次输入一致则通过,否则没有通过。

实现该示例的步骤如下:

(1)根据题意,确定所要使用的对象,从键盘上输入一串字符,可以使用javax.swing类库中的JOptionPane类的showInputDialog()方法,该方法是从系统的标准设备上输入并获取字符串。

(2)程序参考代码如下:

/*这是一个简单的Java示例程序

*功能是从键盘上两次输入同一个字符串,若两次输入一致,

*则作为验证吗通过,否则没有通过.

*程序的名字为Practice3_1_2.java

*/

importjavax.swing.JOptionPane;

publicclassPractice3_1_2

{

publicstaticvoidmain(Stringargs[])

{

Stringcode1,code2;//定义两个字符串变量

booleanl1;//定义布尔变量l1

code1=JOptionPane.showInputDialog("请输入至少6位的验证码:

");

code2=JOptionPane.showInputDialog("再输入一次:

");

l1=code1.equals(code2);//比较字符串是否一样

System.out.println("验证通过了吗?

"+l1+"!

");

System.exit(0);

}

}

(3)程序及执行结果分析

在程序中涉及到了字符串的比较,它不同于单个字符的比较,在对两个字符串进行等于比较时,需要使用字符串对象的equals()方法,该方法返回布尔值。

程序的最后执行System.exit(0)方法结束程序执行。

一般来说,在字符界面下,程序执行完main()方法中的最后一个语句时,程序便自动结束了。

由于程序中使用了对话框,这是图形界面的操作,程序不能够自动结束,所以需要执行上述方法结束程序。

自由训练3.1仿照实验示例3.1.1编写程序,实现从键盘上输入一个字符,判断其是否数字字符。

自由训练3.2仿照实验示例3.1.2编写程序,实现从键盘上输入任意一个数字字串,将其转换为整数,并判断其是否是奇数,且能否被3除尽。

3.2实验二:

选择结构的应用

1.实验目的

1)正确理解各种选择结构(if、if~else~、switch)的语法构成及控制流程;

2)基本掌握选择结构程序设计的基本思想和方法。

2.实验要求

1)根据各种选择结构的实验题目,画出程序实现的处理流程;

2)根据程序实现的处理流程,编写程序;

3)编译运行程序,分析程序及执行结果。

3.实验内容

实验示例3.2.1编写程序,从键盘上输入任何一个字符,判断其是字母,数字还是其他字符。

实现该示例的基本步骤如下:

⑴为了正确有效地编写代码,先画出如图3-1所示的处理流程:

⑵根据流程编写并建立Java程序文件Practice3_2_1.java。

程序清单如下:

/*这是一个简单的Java示例程序

*功能是从键盘上接收一个字符,判断该字符是字母,数字还是其他字符

*程序的名字为Practice3_2_1.java

*/

importjava.io.*;

publicclassPractice3_2_1

{

publicstaticvoidmain(Stringargs[])throwsjava.io.IOException

{

charc1;//定义字符变量c1

c1=(char)System.in.read();//从键盘上接收一个字节数据赋给c1

if(c1>='A'&&c1<='Z'||c1>='a'&&c1<='z')System.out.println(c1+"是字母!

!

!

");

elseif(c1>='0'&&c1<='9')System.out.println(c1+"是数字字符!

!

!

");

elseSystem.out.println(c1+"是其他字符!

!

!

");

}

}

⑶程序及执行结果分析

在程序中,使用了示例3.1.1中输入数据的方式,以if多分支结构语句判断字符的归属并输出相应的结果。

实验示例3.2.2某商场根据售货员当月的营业额计算当月奖金,计算方法如下:

10万元以内(包括10万元),取销售额的1%;

15万元以内(包括15万元),10万元按10万以内计算,超出10万元的部分,取0.75%;

20万元以内(包括20万元),15万元按15万以内计算,超出15万元的部分,取0.5%;

20万元上,20万元按20万元以内计算,超出20万元的部分,取0.3%。

编写程序计算奖金。

⑴为了正确有效地编写代码,先画出如图3-3所示的处理流程:

⑵根据流程编写并建立Java程序文件Practice3_2_2.java。

程序清单如下:

/*这是一个简单的Java示例程序

*它的功能是计算奖金额

*程序的名字为Practice3_2_2.java

*/

importjavax.swing.*;

publicclassPractice3_2_2

{

publicstaticvoidmain(String[]args)

{

floatm1,j1;//定义营业额m1,奖金额j1

Stringsm1=JOptionPane.showInputDialog("请输入营业额(单位为万元):

");

m1=Float.parseFloat(sm1);//获得营业额

if(m1<=10f)j1=m1*0.01f;

elseif(m1<=15f)j1=10f*0.01f+(m1-10f)*0.0075f;

elseif(m1<=20f)j1=10f*0.01f+5f*0.0075f+(m1-15f)*0.005f;

elsej1=10f*0.01f+5f*0.0075f+5f*0.005f+(m1-20f)*0.003f;

System.out.println("营业额="+m1+"万元,应得奖金="+j1+"万元");

System.exit(0);//结束程序执行

}

}

⑶程序及执行结果分析

在程序中,我们仍然使用输入对话框来输入浮点数字串,然后使用Float类的parseFloat()方法将数字串转换为Float常数。

根据获得的营业额,按其多少分别计算相应的奖金额。

程序中使用了多分支的if结构语句进行判断处理。

请多次运行程序,分别输入不同的值,验证处理的正确性。

也许有人会问:

该问题能够使用简单的if分支结构语句解决吗吗?

回答是肯定的。

为了搞清楚if简单分支和多分支的区别和应用,把使用if单分支结构语句实现该示例作为一个自由训练作业留给大家。

实验示例3.2.3将实验示例3.2.2以switch结构方式实现。

实现该示例的基本步骤如下:

⑴处理流程如图3-2所示;

⑵根据流程编写并建立Java程序文件Practice3_2_3.java。

程序清单如下:

/*这是一个简单的Java示例程序

*它的功能是计算奖金额.以switch结构实现

*程序的名字为Practice3_2_3.java

*/

importjavax.swing.*;

publicclassPractice3_2_3

{

publicstaticvoidmain(String[]args)

{

floatm1,j1;//定义营业额m1,奖金额j1

Stringsm1=JOptionPane.showInputDialog("请输入营业额(单位为万元):

");

m1=Float.parseFloat(sm1);//获得营业额

intn=(int)(m1-0.0001)/5;

switch(n)

{

case0:

case1:

j1=m1*0.01f;

break;

case2:

j1=10f*0.01f+(m1-10f)*0.0075f;

break;

case3:

j1=10f*0.01f+5f*0.0075f+(m1-15f)*0.005f;

break;

default:

j1=10f*0.01f+5f*0.0075f+5f*0.005f+(m1-20f)*0.003f;

}

System.out.println("营业额="+m1+"万元,应得奖金="+j1+"万元");

System.exit(0);//结束程序执行

}

}

⑶程序及执行结果分析

该程序采用了switch结构进行处理,该结构的关键在于构造判断表达式,根据表达式的值进行相应的处理。

程序功能和上例是一样的,可以多次执行程序,分别输入不同的值以验证程序处理的正确性。

自由训练3.3编写程序:

以简单的if结构语句实现实验示例3.2.2。

自由训练3.4阅读下列程序:

/*这是一个简单的Java示例程序

*它的功能是计算奖金额.以switch结构实现

*程序的名字为Practice3_2_3.java

*/

importjavax.swing.*;

publicclassTest3_3

{

publicstaticvoidmain(String[]args)

{

floatm1,j1=0;//定义营业额m1,奖金额j1

Stringsm1=JOptionPane.showInputDialog("请输入营业额(单位为万元):

");

m1=Float.parseFloat(sm1);//获得营业额

System.out.print("营业额="+m1+"万元,");

intn=(int)(m1-0.0001)/5;

switch(n)

{

default:

j1+=(m1-20f)*0.003f;

m1=20;

case3:

j1+=(m1-15f)*0.005f;

m1=15;

case2:

j1+=(m1-10f)*0.0075f;

m1=10;

case1:

case0:

j1+=m1*0.01f;

}

System.out.println("应得奖金="+j1+"万元");

System.exit(0);//结束程序执行

}

}

该程序的目的是实现实验示例3.2.2的功能,输入并编译执行程序,执行的结果正确吗?

该实现方式和实验示例3.2.3有哪些区别?

通过上边示例的实验和自由训练,应该初步了解和掌握了选择结构基本的使用方法,选择结构在程序设计中是常用的,请大家认真总结并思考以下问题:

简单if分支结构语句、多分支结构语句与switch结构各有哪些特点?

它们分别适用于处理那些应用?

3.3实验三:

循环结构的应用

1.实验目的

1)正确理解各种循环结构(while、do~while、for)的语法构成及控制流程;

2)理解break、continue控制语句的意义,并正确使用它们;

3)基本掌握循环结构程序设计的基本思想和方法。

2.实验要求

1)根据各种循环结构的实验题目,画出程序实现的处理流程;

2)根据程序实现的处理流程,编写程序;

3)编译运行程序,分析程序及执行结果。

3.实验内容

实验示例3.3.1从键盘上输入n个字符,统计其中字母、数字和其它字符的个数。

可以参照实验示例3.2.1,在此示例的基础上稍作修改即可。

实现该示例的基本步骤如下:

⑴主要处理流程如图3-3所示;

⑵根据流程编写并建立Java程序文件Practice3_3_1.java。

程序清单如下:

*这是一个简单的Java示例程序

*功能是从键盘上接收n个字符,统计其中字母,数字和其他字符的个数

*程序的名字为Practice3_3_1.java

*/

importjava.io.*;

publicclassPractice3_3_1

{

publicstaticvoidmain(Stringargs[])throwsjava.io.IOException

{

charc1;//定义字符变量c1

intn=50,i,alphabet=0,digit=0,other=0;//定义所需变量

System.out.println("请连续输入"+n+"个字符,之后按回车键完成:

");

for(i=1;i<=n;i++)

{

c1=(char)System.in.read();//从键盘上接收一个字节数据赋给c1

if(c1>='A'&&c1<='Z'||c1>='a'&&c1<='z')alphabet++;

elseif(c1>='0'&&c1<='9')digit++;

elseother++;

}

System.out.println(n+"字符中,"+alphabet+"个字母,"+digit+"个数字字符,"+other+"个其他字符!

!

!

");

}

}

⑶程序及执行结果分析

在程序中使用了for循环结构,该结构是最常用的循环结构,一般用于确定重复次数(当然也可用于不确定次数)的循环。

在程序执行时,可以连续输入n个字符,然后按回车键完成输入,当然也可以输入一个或多个字符按回车键,如果输入不足n个字符,程序会继续等待输入字符,直到收到n个字符为止;如果输入多于n个字符,后边多余的字符将被丢弃。

程序一个个单独接收字符,根据分类分别计数统计,完成后输出统计结果。

实验示例3.3.2.查找、统计并输出100~1000之间的素数。

提示:

素数是只能被1和自身除尽的数,要判断一个数N是否是一个素数,只需看N是否能被2~N/2之间的任一个数除尽,如果有,则不是素数,否则是素数。

实现该示例的基本步骤如下:

⑴处理流程如图3-4所示;

⑵根据流程编写并建立Java程序文件Practice3_3_2.java。

程序清单如下:

参考程序一:

/*这是一个简单的Java示例程序

*它的功能是查找、统计并输出100~1000之间的素数

*程序的名字为Practice3_3_2.java

*/

publicclassPractice3_3_2

{

publicstaticvoidmain(String[]args)

{

intcount=0;

F1:

for(intN=101;N<=1000;N+=2)

{

for(inti=2;i

count++;//素数个数计数

System.out.print(""+N);//输出素数

if(count%10==0)System.out.println();//一行输出10个后换行

}

System.out.println("\n100~1000内素数的个数为:

"+count);

}

}

参考程序二:

/*这是一个简单的Java示例程序

*它的功能是查找、统计并输出100~1000之间的素数

*程序的名字为Practice3_3_2_1.java

*/

publicclassPractice3_3_2_1

{

publicstaticvoidmain(String[]args)

{

intcount=0;

for(intN=101;N<=1000;N+=2)

{

inti=2;

for(;i

if(i>=N/2)

{

count++;//素数个数计数

System.out.print(""+N);//输出素数

if(count%10==0)System.out.println();//一行输出10个后换行

}

}

System.out.println("\n100~1000内素数的个数为:

"+count);

}

}

⑶程序及执行结果分析

该实验示例提供了两个参考程序,都使用了双重循环,内层循环用于判断N是否是素数;外层循环逐个提供数据N,若N是素数,则输出并计数。

第一个参考程序在内循环体中判断N能否被2~N/2之间的数除尽,一旦遇到被除尽的数,则表明N不是素数,程序采用continue加标号的控制方式跳出内层循环并结束外层循环的本次循环,进入外层循环的下一次循环,计算判断下一个N是否为素数;若没有遇到被除尽的数,内层循环正常结束,表明N是一个素数,输出并计数。

第二个参考程序在内循环体的循环处理中,一旦遇到被除尽的数,则表明N不是素数,采用break的控制方式结束内层循环,然后依靠内循环的执行次数来判断N是否是素数,若内层循环控制变量i>=N/2,则表明内层循环正常结束,没有遇到被除尽的数,N是素数,输出并计数;否则,不是素数。

该示例的目的主要是加深对多重循环(循环嵌套)的认识,在多重循环中,内层循环变化最快,可以把它作为外层循环体的一个语句块来对待。

在示例的两个程序中分别使用了控制语句continue和break,并且使用了带语句标号的continue格式,它使得程序简洁、明了。

请大家认真阅读和理解这两个程序,注意控制语句的使用场合和使用方法。

实验示例3.3.3根据如下的计算公式计算其近似值,要求最后一项的绝对值小于10-5。

要求当前项

实现该示例的基本步骤如下:

⑴处理流程如图3-9所示;

⑵根据流程编写并建立Java程序文件,程序清单如下:

参考程序1:

/*这是一个简单的Java示例程序

*它的功能是计算输出级数的近似值

*程序的名字为Practice3_3_3.java

*/

publicclassPractice3_3_3

{

publicstaticvoidmain(String[]args)

{

doublen=2.0,p=1.0,sign=-1.0;

while(1.0/(n*n+1)>=1e-5)

{

p+=sign/(n*n+1);

sign=-sign;

n++;

}

System.out.println("p="+p);

}

}

参考程序2:

/*这是一个简单的Java示例程序

*它的功能是计算输出级数的近似值

*程序的名字为Practice3_3_3_1.java

*/

publicclassPractice3_3_3_1

{

publicstaticvoidmain(String[]args)

{

doublen=2.0,p=1.0,sign=-1.0;

do

{

p+=sign/(n*n+1);

sign=-sign;

n++;

}

while(1.0/(n*n+1)>=1e-5);

System.out.println("p="+p);

}

}

⑶程序及执行结果分析

该示例也提供了两个参考程序,分别采用了while和do~while循环结构,这种结构一般适用于不定次数的循环问题,选取循环条件是关键。

两种循环格式的区别是,do~while循环的特点是先执行后判断,所以循环至少被执行一次;而while循环是先判断而后执行,所以循环有可能一次也不被执行。

本例中使用了双精度浮点数进行处理,以获得较高的计算精度;在加入各项值时,由于是一正一负交替进行的,所以采用一个变量sign来处理:

sign=-sign,以达到所需的目的。

认真阅读程序,掌握各种循环结构的用法,完成下边的自由练习:

自由练习3.5阅读以下程序:

/*这是一个简单的Java示例程序

*它的功能是:

已知n!

=3628800,n=?

*程序的名字为Test3_5.java

*/

publicclassTest3_5

{

publicstaticvoidmain(String[]args)

{

longn=1,facorial=1;

do

{

n++;

facorial*=n;

}

while(facorial>=3628800);

System.out.println("n!

="+facorial+"n="+n);

}

}

输入、编译和执行程序,程序的执行结果对吗?

为什么?

找出原因并修改程序获得正确结果

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 思想汇报心得体会

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1