java 实验三 控制语句 实验报告Word文档下载推荐.docx
- 文档编号:18697833
- 上传时间:2022-12-31
- 格式:DOCX
- 页数:25
- 大小:4.69MB
java 实验三 控制语句 实验报告Word文档下载推荐.docx
《java 实验三 控制语句 实验报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《java 实验三 控制语句 实验报告Word文档下载推荐.docx(25页珍藏版)》请在冰豆网上搜索。
编写程序,接受10个从键盘输入的任意整数,请使用冒泡排序算法完成对这些整数排序,并输出排序结果。
该程序代码如下:
packagezi;
importjava.util.Scanner;
publicclassEx3_3{
publicstaticvoidmain(String[]args){
System.out.println("
请输入要输入的数据的个数:
"
);
Scannersc=newScanner(System.in);
intsum=sc.nextInt();
请输入要排序的数据:
int[]a=newint[sum];
for(inti=0;
i<
a.length;
i++){
a[i]=sc.nextInt();
}
bubbleSort1(a,a.length);
排序后为:
System.out.print(a[i]+"
\t"
}
}
publicstaticvoidbubbleSort1(int[]a,intlength){
if(length==1)
return;
for(inti=0;
length-1;
if(a[i]>
a[i+1]){
inttemp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
bubbleSort1(a,length-1);
}
该程序的执行结果截图如下:
该程序的类图截图如下:
实验3—4、猜数字游戏:
请学习通用对话框以及随机数的生成。
实验要求:
完成一个Java应用程序,实现下列功能:
1)程序随机分配给客户一个1—100之间的整数
2)用户在输入对话框中输入自己的猜测
3)程序返回提示信息,提示信息分别是:
“猜大了”、“猜小了”和“猜对了”。
4)用户可根据提示信息再次输入猜测,直到提示信息是“猜对了”。
该程序的代码如下:
importjavax.swing.JOptionPane;
publicclassEx3_4{
publicstaticvoidmain(Stringargs[]){
JOptionPane.showMessageDialog(null,"
给你一个1至100之间的整数,请猜测这个数"
intrealNumber=(int)(Math.random()*100)+1;
intyourGuess=0;
Stringstr=JOptionPane.showInputDialog("
输入您的猜测:
yourGuess=Integer.parseInt(str);
while(yourGuess!
=realNumber){
if(yourGuess>
realNumber){
str=JOptionPane.showInputDialog("
猜大了,再输入你的猜测:
elseif(yourGuess<
猜小了,再输入你的猜测:
JOptionPane.showMessageDialog(null,"
恭喜你,猜对了!
数为:
+yourGuess);
该程序的执行结果如下图所示:
实验后的思考:
1.用“yourGuess>
realNumber”替换【代码1】,可以么?
答:
可以。
其执行结果如下:
2.语句:
“JOptionPane.showMessageDialog(null,"
猜对了!
这个数就是"
+realNumber);
”为何要放在while循环语句之后?
放在while语句的循环体中合理吗?
请将回答写在实验报告中。
这个问题我不太了解,XX也查不出个所以然。
实验3—5、分析并运行下面程序,并回答下面问题,最后完善异常处理程序。
publicclassQuestion9_1{
publicvoidrun(){
for(inti=0;
4;
i++){
inta;
try{
switch(i){
case0:
//除数为0
intzero=0;
a=4/zero;
break;
case1:
//数组越界访问
int[]b=newint[5];
a=b[5];
case2:
int[]c=newint[-1];
a=c[0];
case3:
int[]d=null;
a=d[0];
catch(Exceptione){
System.out.println("
Case"
+i+"
hasanexception"
System.out.println(e);
问题:
(1)程序运行结果怎样,出现了哪些异常?
程序运行结果截图如下:
该程序运行出现了除数不能为0,数组越界,还有空指针放回等异常。
(2)分析异常是怎样抛出、捕获和处理的?
抛出异常:
在方法的运行过程中,如果发生了异常,则该方法生成一个代表该异常的对象并把它交给运行时系统,运行时系统便寻找相应的代码来处理这一异常。
捕获异常:
运行时系统在方法的调用栈中查找,从生成异常的方法开始进行回溯,直到找到包含相应异常处理的方法为止。
处理异常方法有两种:
一是声明抛出异常,二是捕获异常。
(3)程序中设计循环目的是什么?
个人认为循环可以节省代码,使程序简明易懂。
实验3—6.、编写程序:
输入一个整数n,计算n的阶乘并捕捉可能出现的异常。
(1)阶乘方法命名为factorial();
(2)无论是否出现异常,最后都要能够显示:
“Finishcomputingfactorialnumber.”。
(3)当输入的数大于20时,请抛出一个自定义的“数字过大俺算不了”异常(名字自定吧,总之n>
20就抛出自定义异常给出提示说数字太大了,算不了阶乘)。
(4)请使用编好的程序分别计算”abc”,”-1”,”20”以及”21”的阶乘,程序输出结果截图。
提示:
(1)输入字符串时,可能会产生IOException异常;
(2)输入的字符串如果不能转换成int类型,将产生NumberFormatException异常;
(3)当输入的字符串转换成int类型之后为负数时,在计算阶乘时,请抛出一个IllegalArgumentException异常;
(4)抛出自定义的异常;
(5)其他可能异常,也需要给出提示信息。
classtoobigextendsException{
publictoobig(){
super("
数字太大算不了!
publicclassEx3_6{
publicstaticvoidmain(String[]args){
System.out.print("
请输入一个整数:
Scannern1=newScanner(System.in);
intn=n1.nextInt();
System.out.println();
System.out.print(n+"
的阶乘为:
intsum=factorial(n);
System.out.print(sum);
}
privatestaticintfactorial(inti){
if(i<
=1)
{
return1;
else
return(int)i*factorial(i-1);
执行结果如下图所示:
其类图截图如下:
实验3—7、课本102页习题第6题。
这个题目要求输入0.1元到5.0元的值,然后自动给出最小找零方案,比如输入2.01,就找2.99元,最小找零方案是:
两元1张,五角1枚,二角2枚,五分1枚,二分2枚。
这题主要是算法思路,请大家仔细审题,提供思路如下(参考):
(1)存在元、角、分不同币值,在计算时建议统一转换成分,比如5元就是500分,2元就是200分;
(2)用几个数组,按顺序存储可以使用的转换后的币值,如200,100,2;
还有对应币值的名字,如两元,一元,二分;
还有对应的单位,如元,元,枚;
(3)怎么才算最小找零方案,张数(枚数)最小就意味着尽量用大币值去找零,所以把找零的总额转成分后,依次除以大币值,得出的商就是该币值的找零张数(枚数),而得出的模(也就是余数)就是继续要找零的,继续除以下一个较小的币值,。
。
依次类推,知道最后不再有余数,说明找零成功,把依次得到的商对应相对应的币值输出即可。
该题的代码如下:
publicclassPrice{
publicstaticvoidmain(Stringargs[]){
输入商品价格:
floata=Keyboard.getFloat();
intc=(int)(a*100);
intb=500-c;
找零如下:
if(b/200!
=0){System.out.println(b/200+"
张2元"
b-=(b/200)*200;
if(b/100!
=0){System.out.println(b/100+"
张1元"
b-=(b/100)*100;
if(b/50!
=0){System.out.println(b/50+"
张5角"
b-=(b/50)*50;
if(b/20!
=0){System.out.println(b/20+"
张2角"
b-=(b/20)*20;
if(b/10!
=0){System.out.println(b/10+"
张1角"
b-=(b/10)*10;
if(b/5!
=0){System.out.println(b/5+"
个5分"
b-=(b/5)*5;
if(b/2!
=0){System.out.println(b/2+"
个2分"
b-=(b/2)*2;
if(b!
=0)System.out.println(b+"
个1分"
importjava.io.*;
publicclassKeyboard{
staticBufferedReaderinputStream=newBufferedReader(newInputStreamReader(System.in));
publicstaticintgetInteger(){
try{
return(Integer.valueOf(inputStream.readLine().trim()).intValue());
}catch(Exceptione){
e.printStackTrace();
return0;
publicstaticStringgetString(){
return(inputStream.readLine());
}catch(IOExceptione){
return"
0"
;
publicstaticfloatgetFloat(){
Strings="
BufferedReaderin=newBufferedReader(newInputStreamReader(System.in));
s=in.readLine();
return(Float.parseFloat(s));
catch(IOExceptione)
{
输入非法!
return(0.0f);
}
其执行结果如下图所示:
其类图的截图如下图所示:
实验3—8、编写Java程序,要求利用方法重载,键盘录入任意2个数或3个数,求最大数,其中,这2个数或3个数要么全是整数,要么全是浮点数。
(1)求3个数的时候调用现有的2个数的方法来辅助求解。
(2)需考虑录入者输入一个整数跟一个浮点的异常处理。
(3)采用上述《猜随机数》的人机界面,用对话框来完成整个程序。
(4)(选做)是否可以一行一次性录入2或3个数,而不需要每次只录入一个数?
publicclassEx3_8{
publicstaticvoidmain(String[]args){
Stringinput,input1,input2,input3;
intn;
floata,b,c;
input=JOptionPane.showInputDialog("
选择输入2个数还是3个数:
n=Integer.parseInt(input);
if(n==2){
input1=JOptionPane.showInputDialog("
输入第一个数"
input2=JOptionPane.showInputDialog("
输入第二个数"
a=Integer.parseInt(input1);
b=Integer.parseInt(input2);
max(a,b);
elseif(n==3){
input3=JOptionPane.showInputDialog("
输入第三个数"
a=Integer.parseInt(input1);
b=Integer.parseInt(input2);
c=Integer.parseInt(input3);
max(a,b,c);
elseSystem.out.print("
数的个数不正确,请重新输入!
publicstaticvoidmax(floata,floatb)
{
//Stringinput1,input2;
floatmax;
if(a>
b)max=a;
elsemax=b;
JOptionPane.showMessageDialog(null,a+"
"
+b+"
中的最大数是:
+max,"
最大数结果"
JOptionPane.PLAIN_MESSAGE);
publicstaticvoidmax(floata,floatb,floatc)
b)
c)
max=a;
else
max=c;
if(b>
max=b;
+c+"
输入两个数运行结果截图如下:
输入三个数的运行结果截图如下:
实验3—9、有关注解的例子:
请大家按顺序完成以下这个例子(参考他人形成的例子),具体知识请参照书本或自行检索。
(1)建立一个简单的注解例子。
新建一个注解,文件名跟注解名叫TestA,其截图如下:
接下来的注解太复杂了,编译老出错,就不截图了。
实验心得:
1、个人觉得本次实验较前两次实验难度较大,部分内容也较难理解和应用。
2、不过本次实验我也体验到用Java编译小程序的乐趣,比如说猜数游戏,找零钱等,觉得较为实用,并可用于日常生活中。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 实验三 控制语句 实验报告 实验 控制 语句 报告