版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JAVA语言程序设计
第一章概述
面向对象技术是程序设计方法学的一场革命,已成为计算机应用开发领域的主流技术。面向对象技术能够更逼真地模拟现实世界,使软件开发人员按照认识客观事物的思维方法进行软件开发,它所倡导的将数据与操作捆绑的程序设计风格,正好符合现代大规模软件开发对高可靠性、易维护性和代码重用性的要求和发展潮流。JAVA语言是21世纪开发应用程序的首选工具。JAVA的发展历史及特点JAVA语言是由SUN公司于1995年5月23日正式推出的纯面向对象的程序设计语言,集安全性、简单性、易用性和平台无关性于一身并且特适合于网络环境下编程使用。特点:简单性、面向对象、安全性、平台独立、多线程、网络功能、执行效率//文本打印程序Example1_1.javapublicclassExample1_1{publicstaticvoidmain(Stringargs[]){System.out.println("Hellojava!");}//main方法结束}//类Example1_1结束JAVA程序示例1-1运行结果:Hellojava!//C程序//例example1_1.cmain(){printf(“HelloC!”);}//C++程序//例example1_1.cppclassClassA{public:voidprint(){cout<<“HelloC++!”;}};main(){ClassAexp;exp.print();}//用多个语句打印一行文本publicclassExample1_1_1{publicstaticvoidmain(Stringargs[]){
System.out.print(“Hello”);System.out.println(“Java!”);}//main方法结束}//类Example1_1_1结束//用一个语句打印多行文本publicclassExample1_1_2{publicstaticvoidmain(Stringargs[]){System.out.print(“Hello\nJava\n!”);}//main方法结束}//类Example1_1_2结束运行结果:Hellojava!运行结果:Hellojava!JAVA程序组成由类组成区分大小写类与类之间平行,不能嵌套主类只有一个,包含main()方法的类为主类源文件的名必须与主类名称一致源文件必须以java为扩展名,通过文本编辑的源程序文件注意要改名面向对象程序设计的核心概念
类类库(JavaAPI)属于语言的一部分避免一切从头做,实现软件复用学习JAVA实际上学两部分:
既要学习Java语言本身,以便编写自己的类;
也要了解类库。类库是独立的与编译和运行环境没有必然联系,类库需要逐步扩充尽可能使用类库可以提高程序的运行性能和稳定性程序通常由自定义类和类库应用共同构建publicclassExample1_2{publicstaticvoidmain(Stringargs[]){Stringa=args[0];Stringb=args[1];System.out.println(a+""+b);System.out.println("值此新春佳节之际,祝贺您和您的家人");System.out.println("新春快乐工作顺利身体健康阖家幸福");}}JAVA程序示例1-2该程序在执行时,需要在命令行后面加上姓名和称谓程序执行命令路径javacExample1_2.java路径javaExample1_2王先生王先生值此新春佳节之际,祝贺您和您的家人新春快乐工作顺利身体健康阖家幸福程序执行结果练习修改程序例1_2:(1)把main改个名字,然后保存,运行?查看编译结果,记录下有关提示信息。(2)main方法前的修饰符public去掉,看编译结果并记录下提示信息(3)static去掉呢?(4)把arg[]改为int[],或String试试看(5)把arg改为别的名字,看程序编译结果JAVA的开发及运行环境最基本的开发工具J2SDK:来源Http:///j2se/1.4/download.html网站免费下载系统设置1、双击“控制面板”的“系统”图标
2、选择”高级”选项,添加或修改环境变量path和classpath
如果J2SDK的安装目录为c:\jdk1.4,需将
path设置到c:\jdk1.4\binclasspath设置到c:\jdk1.4\lib\tools.jar和”.”JAVA源程序的编辑由任意一种文字编辑器如windows的写字板产生文本文件即后缀为txt的文件,在更名为同名的以java为后缀的文件JAVA程序的执行流程JAVA的平台无关性Java开发/运行时环境Compile=编译,翻译为叫做Java字节码(JVM的机器码)的中间语言。Interpret=解释,JVM分析和运行字节码。Just-In-TimeCompiler=即时编译器,把常执行的机器码放在内存,再次执行时直接从内存取出,使执行速度接近编译语言的速度。JVM=Java虚拟机,编程语言与机器底层软件和硬件之间的翻译器。RuntimeSystem=运行时系统,将Java程序编译成适合Java虚拟机运行形态的软件。它包含加载程序、动态连接库,管理内存,处理异常所必需的代码,和一个Java虚拟机(Java解释器)。Java程序的编译执行Javac.exeJava.exeJAVA的计算结构A单机简单、不支撑复杂系统、灵活、速度快B主机-终端数据集中、功能集中、I/O在终端、运算在主机、负荷重C客户端/服务器C/S客户端和服务器分别编写程序D浏览器/服务器B/S客户端只需安装浏览器软件只做服务器编程JAVACC++是否直译式是否,编译式否,编译式编译后是否产生机器码否,产生一种接近机器码的字节码是是是否跨平台是否,必须根据计算机平台改变程序否,必须根据计算机平台改变程序运行速度较C/C++稍慢快快是否有指针类型否,使用对象引用来代替指针是是是否具备继承功能允许单一继承否允许多重继承JAVA和C/C++的差异编译和运行JAVA程序1、编辑java源程序注意将.txt文件更名为同名.java文件2、进入命令提示符具体方法是进入”程序”菜单选”附件”再选”命令提示符”,为方便操作可将其拉入桌面3、使用ren命令将源程序更名为.java程序
renfilename.txtfilename.java4、编译JAVA源程序,执行javac.exe文件,具体命令为
javacfilename.java5、回到文本编辑器,修改编译错误6、返回4,再编译直至无误,生成合法类文件
7、运行JAVA程序具体命令为
javafilename8、检查运行结果,有错返回5改错,否则运行成功标识符和关键字
标识符identifier好像一个人生下来就要给他起个名字一样,作为一种识别记号。计算机中的变量、常量、方法、类等也都是用名字来加以识别的,这种名字就是标识符。起名的方法有一种约定,即可以是一个字母或者是一串以字母开头由字母、数字或符号组成的字符串。
1、符号只允许下划线_和美元$符号
2、名字长度不限
3、注意英文字母大小写代表不同含义
4、取名应遵循易于理解、便于记忆的原则例如合法标识符Lotus_1wang$
非法标识符A?23ababstractdefaultgotooperatorsynchronibooleandoifouterthisbreakdoubleimplementspackagethrowbyteelseimportprivatethrowsbyvalueextendsinnerprotectedtransientcasefalseinstanceofPublictruecastfinalintresttrycatchfinallyinterfacereturnvarcharfloatlongshortvoidclassfornativestaticvolatileconstfuturenewsuperwhilecontinuegenericnullswitch关键字也称保留字是程序设计语言本身已经使用并赋予特定意义的一些标识符,编程人员在为自定义的标识起名时,不能与关键字同名。分隔符用来区分源程序中基本成分,便于代码组织和理解。就像一篇文章如果没有分隔符,文章的内容很难理解。JAVA分隔符有注释、空白符和普通分隔符三种注释有三种形式即由/*注释部分*/,/**注释部分**/和//注释部分空白符包括空格、回车、换行和制表符(Tab键)等符号JAVA普通分隔符有四种
1、花括号{}用来定义复合语句、方法体、类体及数据的初始化
2、分号;是语句的结束标志
3、逗号,分隔方法的参量和变量说明
4、冒号:说明语句标号JAVA分隔符数据类型与变量、常量数据是程序操作的对象,具有名称、类型和作用域等特征。数据由标识符命名;数据的类型表示数据的性质、占用内存多少和存放形式;数据的作用域表示程序中可以使用数据的范围。JAVA数据类型分为基本型(简单类型)和引用类型(复合类型)两种。基本类型(primitivetype)包括整型(integer)、浮点型(floatingpointnumber)字符型(character)和布尔型(boolean)。引用类型(referencetype)包括数组型(array)、类(class)和接口(interface)数据类型所占字节表示范围long(长整型)8-9223372036854775808~
9223372036854775807int(整型)4-2147483648~2147483647short(短整型)2-32768~32767byte(位)1-128~127char(字符)10~255boolean(布尔)1布尔值只能使用true或falsefloat(单精度)4-3.4E38~3.4E38double(双精度)8-1.7E308~1.7E308Java的基本数据类型常量
常量是指在程序运行过程中其值始终保持不变的量。根据数据类型划分对应有整型常量、浮点型常量、布尔型常量和字符串常量等。
整型类型又细分为long,int,short和byte四种类型,对应也有这四种整型常量,长整型常量后面要加上字母L或l。
计算机中数的表示广泛采用十进制、八进制和十六进制三种形式。十进制数即为通常使用的形式八进制数必须以0开头,如034,099等十六进制数以0x开头,如0xAB,0xF2等变量
变量就是在程序运行过程中其值可以被改变的量。在程序设计过程中,要想使用变量,首先要对变量进行声明,声明有两点,第一是声明变量的名称,第二是声明变量的数据类型。变量要先经过声明,然后才能进行赋值和使用。类型名是由关键字决定的整型有longintshortbyte浮点型有floatdouble默认为double单精数后面加f字符型为char字符串为String字符串用双引号括住“”布尔型为boolean//输出JAVA整数类型数据publicclassInteger2_1{publicstaticvoidmain(Stringargs[]){bytea=015;//八进制数
byteb=20;//十进制数
bytec=0x25;//十六进制数
shortx=30;//短整型
longy=1234567890123l;//长整型
System.out.println("a="+a+""+"b="+b+""+"c="+c);System.out.println("x="+x+""+"y="+y);}}输出结果是:a=13b=20c=37X=30y=1234567890123//输出给定的JAVA单精度和双精度类型数据publicclassFloating2_2{publicstaticvoidmain(Stringargs[]){floata=35.45f;doubleb=3.56e18;System.out.println("a="+a);System.out.println("b="+b);}}输出结果如下a=5.45b=3.56E18//输出给定的JAVA字符类型常数publicclassCharacter2_3{publicstaticvoidmain(Stringargs[]){charch1='a';charch2=80;charch3='\n';charch4='\070';//八进制Unicode码
charch5='\u0050';//十六进制Unicode码
System.out.println("ch1="+ch1+"ch2="+ch2+ch3);System.out.println("ch4="+ch4+"ch5="+ch5);}}运行结果如下ch1=ach2=p(ch3是回车符)
ch4=8ch5=p//输出给定的JAVA字符串数据类型以及运算结果publicclassCharacter2_4{publicstaticvoidmain(Stringargs[]){Stringstr1="abc";Stringstr2="\n";Stringstr3="80\070\u0050";System.out.println("str1="+str1+"str2="+str2);System.out.println("str3="+str3);}}运行结果如下str1=abcstr2=str3=808p//输出给定的JAVA逻辑类型数据publicclassLogic2_5{publicstaticvoidmain(Stringargs[]){booleaninstance1=true;booleaninstance2=false;System.out.println("逻辑状态1="+instance1);System.out.println("逻辑状态2="+instance2);}}运行结果如下逻辑状态1=true逻辑状态2=falseJAVA的运算符
JAVA语言按运算符对数据的运算结果分类有算术运算符、逻辑运算符、关系运算符、赋值运算符和位运算符;按运算符运算的数据个数分类可分为一元运算符、二元运算符和三元运算符。算术运算符有五种加+减–乘
*除
/取余%其中除减号可作为一元运算符外均为二元运算符另外两个经常使用的一元运算符是加一运算++和减一运算--i++相当于i变量加1再放入i中;先使用后加一。++i相当于i变量加1再放入i中;先加一再使用。i--相当于i变量加1再放入i中;先使用后减一。--i相当于i变量加1再放入i中;先减一再使用。语句与表达式
语句是构成程序的基本单位,语句具有独立完整的含义,可以对计算机发出操作命令,每一条语句都必须以分号;作为结束符。
表达式是用运算符把操作数(变量、常量和方法)连接起来表达某种运算或含义的式子。一个表达式可以同时包括多个操作,而操作的顺序由各运算符的优先级及括号来决定。其中运算符是算术运算符称为算术表达式;运算符为逻辑运算符称为逻辑表达式。语句和表达式的区别与联系
1、语句是程序的组成部分;表达式是语句的组成部分
2、语句有结束符;表达式没有结束符
3、语句是针对程序而言的;表达式是数学上的计算概念
4、算式的计算结果=号在右边;赋值语句=号在表达式左边//JAVA整数类型数据除法演示publicclassTwo_perate2_6{publicstaticvoidmain(Stringargs[]){inta=15;intb=7;intc=b/a;intd=a/b;inte=15%7;System.out.println("a="+a+""+"b="+b+""+"c="+c);System.out.println("d="+d+""+"e="+e);}}计算结果如下:c=0d=2//将一元操作符放在变量的前或后,输出其操作结果publicclassOne_Oparate2_7{publicstaticvoidmain(Stringargs[]){inti=15,j;j=i++;System.out.println("i++="+j);j=++i;System.out.println("++i="+j);j=--i;System.out.println("--i="+j);j=i--;System.out.println("i--="+j);j=-i;System.out.println("-i="+j);System.out.println("i="+i);}}运行结果是i++=15++i=17--i=16i--=16–i=-15i=15运算符运算举例含义~位反~x将x逐位取反&位与x&yx、y逐位进行与操作|位或x|yx、y逐位进行或操作^位异或x^yx、y逐位进行相同取0相异取1<<左移x<<yx向左移动,位数是y>>右移x>>yx向右移动,位数是y>>>不带符号右移x>>>yx向右移动,位数是y,空位补0位运算符运算符运算举例含义运算符运算举例含义+=加法x+=yx=x+y&=与x&=yx=x&y-=减法x-=yx=x-y|=或x|=yx=x|y*=乘法x*=yx=x*y^=异或x^=yx=x^y/=除法x/=yx=x/y<<=左移x<<=yx=x<<y%=取余x%=yx=x%y>>=右移x>>=yx=x>>y>>>=不带符号右移x>>>=yx=x>>>y二元算术运算符、逻辑运算符和位运算符的简捷使用运算符描述优先级结合性.[]()域、数组、括号1从左至右++---!~一元操作符2从右至左*/%乘、除、取余3从左至右+-加、减4从左至右<<>>>>>位运算5从左至右<<=>>=关系运算6从左至右==!=逻辑运算7从左至右&按位与8从左至右^按位异或9从左至右|按位或10从左至右&&逻辑与11从左至右||逻辑或12从左至右?:条件运算符13从右至左=*=/=%=+=-=,<<=>>=>>>=&=^=|=赋值运算符
14从右至左运算符的优先级//输出JAVA加减乘除混合运算的结果,注意算术运算符的//优先级publicclassExcellence2_8{publicstaticvoidmain(Stringargs[]){inta=20;intb=7;intd=b*++a;inte=(a/(++b));System.out.println("a="+a+""+"b="+b);System.out.println("d="+d+""+"e="+e);}}运行结果d=147e=2//通过对给定常数进行大小比较,将比较结果作为逻辑值输出publicclassLogical2_9{publicstaticvoidmain(Stringargs[]){intx=15;inty=7;booleanc=(x>y);booleand=((float)x/y==(double)x/y);System.out.println("c="+c);System.out.println("d="+d);}}程序运行结果c=trued=false//通过比较字符串,将字符串比较结果输出publicclassSign2_10{publicstaticvoidmain(Stringargs[]){inttime=10;Stringweek="Monday";if(week=="Sunday"|week=="Saturday")System.out.println("今天我休息");elseif(time>8&&time<12)System.out.println("今天你迟到了");}}程序运行结果今天你迟到了数据类型的转换数据类型的转换分为“自动类型转换”和“强制类型转换”。转换要符合两个条件
1、转换前的数据类型与转换后的类型兼容
2、转换后的数据类型比转换前的数据类型表示的范围大强制类型转换是程序员根据计算的需要强制数据进行类型转换,具体办法是在变量前加上带括号的数据类型关键字。要求关键字必须与要强制转换的数据类型兼容。表达式的类型转换在不同数据类型数据进行计算时总是由表示范围较小的数据类型转换为表示范围较大的数据类型//不同整数数据类型的转换publicclassChange2_11{publicstaticvoidmain(Stringargs[]){shorta=10;intb=34567;intc=a*b;floatd=123.45f;System.out.println("c="+c);System.out.println("num="+d/b);}}程序运行结果如下:c=345670num=0.0035713252//强制整数数据类型的转换publicclassChange2_12{publicstaticvoidmain(Stringargs[]){inta=15;intb=7;floatc=a/b;floatd=(float)a/b;inte=a/(int)d;System.out.println("c="+c+"d="+d+"e="+e);
}}计算结果如下c=2.0d=2.142857e=2作业与练习1、填空:1)_____用于说明和解释一个程序和改善它的可读性。2)_____类型声明一个单精度浮点变量。3)Java语言在使用浮点数数据时默认的类型是_____类型。4)如下代码的打印结果是什么?System.out.print(“*”);System.out.print(“***”);System.out.print(“*****”);System.out.print(“****”);System.out.println(“**”);2。判断题:1)Java运算符是从左到右计算的。2)后面这些是合法的变量名:_under_bar_,m928134,t5,j7,her_sales$,his_$account_total,a,b$,c,z和z2。If语句是最常用的条件判断语句,根据if语句逻辑表达式的取值,决定程序的执行路线。if语句格式if(条件){
执行(语句块1)}括号中的条件是逻辑表达式,其值为true执行语句块1,否则直接执行if语句的下一条语句。花括号中的多个语句被看成是一条复合语句//本程序从命令行输入两个数据与给定的值50进行比较,//若大于50则输出结果
publicclassCondition3_1{publicstaticvoidmain(Stringargs[]){intx,serial,y=0;x=Integer.parseInt(args[0]);serial=Integer.parseInt(args[1]);if(x>50)y=x*serial;System.out.println("y="+y);}}程序运行结果路径javaCondition3_15511Y=605//本程序从命令行输入两个数据与给定的值50进行比较,若大于//50则输出结果//与例3-1的区别是if语句后面有花括号
publicclassCondition3_2{publicstaticvoidmain(Stringargs[]){intx,serial,y;x=Integer.parseInt(args[0]);serial=Integer.parseInt(args[1]);if(x>50){y=x*serial;System.out.println("y="+y);}}}当x<=50时比较本程序与上程序的输出差别条件?语句块2语句块1truefalseif…else语句格式if(条件){(语句块1)}else{(语句块2)}括号中的条件是逻辑表达式,其值为true执行语句块1,其值为false执行语句块2。两种情况在完成各自的任务之后,于if的下一条语句会合。//该程序执行时不要忘记在命令行中给出参量值publicclassExam3_3{publicstaticvoidmain(Stringargs[]){floatscore;score=Integer.parseInt(args[0]);if(score>=60.0)System.out.println("祝贺您的考试成绩通过了!");elseSystem.out.println("很遗憾,您的考试成绩没有通过");}}本程序通过对键盘输入的score值进行判断,给出不同的输出结果if(条件)
语句块1elseif(条件)
语句块2elseif(条件)
语句块3elseif(条件)
语句块4if语句的嵌套所谓嵌套是指程序中存在有多个if语句。如果一条if语句之后还有if语句,或else语句之后还有if语句,就构成了if条件语句的嵌套。//给出任意三个数,通过使用if语句嵌套,将它们//按从小到大排序
importjavax.swing.JOptionPane;publicclassArrange3_4{publicstaticvoidmain(Stringargs[]){Stringstr;doublex,y,z,t;str=JOptionPane.showInputDialog("请输入第一个数");x=Double.parseDouble(str);str=JOptionPane.showInputDialog("请输入第二个数");y=Double.parseDouble(str);str=JOptionPane.showInputDialog("请输入第三个数");z=Double.parseDouble(str);if(x>y)
{
t=x;x=y;y=t;if(x>z){t=x;x=z;z=t;}else
if(y>z){t=y;y=z;z=t;}}
elseif(x>z){t=x;x=z;z=t;if(y>z){t=y;y=z;z=t;}}if(y>z){t=y;y=z;z=t;}System.out.println("最小值="+x);System.out.println("中间值="+y);System.out.println("最大值="+z);System.exit(0);}}运行结果最小值=33.0中间值=43.0最大值=554.0X、Y、Z三个数按从小到大排序的逻辑框图按X、Y、Z的六种排列顺序进行检查1、2、31、3、22、1、32、3、13、1、23、2、1switch语句条件语句块1语句块3语句块4语句块2case1case2case3case4switch(表达式){case值1:语句块1;
break;
case值2:语句块2;
break;
case值3:语句块3;
break;……case值n:语句块n;
break;
default:
语句块n+1;}1、switch语句中的表达式的数据类型可以是byte、char、short、int类型,不允许浮点型和long型。2、根据表达式值与case语句后面的匹配情况决定程序执行的分支3、每个case语句都要有break语句4、不匹配的情况执行default语句//通过键盘输入月份,输出相应月份的英文单词publicclassMonth3_5{publicstaticvoidmain(Stringargs[]){intmonth;month=Short.parseShort(args[0]);switch(month){case1:System.out.println("January");break;case2:System.out.println("February");break;case3:System.out.println("March");break;case4:System.out.println("April");break;case5:System.out.println("May");break;case6:System.out.println("June");break;case7:System.out.println("July");break;case8:System.out.println("August");break;case9:System.out.println("September");break;case10:System.out.println("October");break;case11:System.out.println("Novenber");break;case12:System.out.println("December");break;defoult:System.out.println(“Inputdataerror");}}}注意月份是在命令行中给出的循环结构控制由三种循环语句实现,循环语句有循环体和循环条件两部分组成。while语句的一般形式while(条件){
循环体}条件?循环体语句falsetruewhile循环语句流程图//给定一个循环变量,采用while语句输出循环变量的值
publicclassCyc3_6{publicstaticvoidmain(Stringargs[]){intm=4;while(m>0){m=m-1;System.out.println("m="+m);}}
}
程序运行结果m=3m=2m=1m=0do-while语句的一般形式do{循环体}while(条件)do-while语句的流程图do-while语句与while语句的区别是本语句不管条件是否满足都先进入循环体,即先进体后判断;而while语句是先判断,根据条件表达式的值决定是否进入循环体循环体语句条件?falsetrue//给定一个循环变量,采用do--while语句输出循环变量的值
publicclassCyc3_7{publicstaticvoidmain(Stringargs[]){intm=4;do{m=m-1;System.out.println("m="+m);}while(m>0);}}程序运行结果m=3m=2m=1m=0考虑初值为m=0时,两种循环语句执行结果有何变化//打印正整数1--50中的奇数之和与偶数之和publicclassCyc3_8{publicstaticvoidmain(Stringargs[]){inti,oddsum,evensum;i=1;oddsum=0;evensum=0;do{if(i%2==0)evensum+=i;elseoddsum+=i;}while(++i<=50);System.out.println("奇数和="+oddsum);System.out.println("偶数和="+evensum);}
}程序运行结果奇数和=625偶数和=650//计算1+2+3+...+100publicclassSum3_9_1{publicstaticvoidmain(Stringargs[]){inti=1,sum=0;while(i<=100){sum+=i;//与sum=sum+i等价
i++;
}System.out.println("sum="+sum);}}程序运行结果sum=5050for语句的一般形式for(设定初值;循环条件;修改表达式)
{
循环体
}给定一个初值条件?修改表达式循环体语句for语句使用时需注意1、括号中的任何一个表达式都可以省略2、循环体中可以有空语句(以分号“;”结尾)3、初值和修改表达式可用“,”号得到多重表达式如:for(i=0,sum=0;i<=n;sum+=i,i++)System.out.println(i+”\t”+sum)//计算1+2+3+...+100publicclassSum3_9{publicstaticvoidmain(Stringargs[]){inti,sum=0;for(i=1;i<=100;i++)
sum+=i;//与sum=sum+i等价
System.out.println("sum="+sum);}}程序运行结果sum=5050在使用循环语句求和时,注意要先在循环外,将求和的变量赋初值为0//计算|x|(x<0),x!((0<=x<20),ln(x)(x>=20)的值
importjavax.swing.JOptionPane;publicclassSele3_10{publicstaticvoidmain(Stringargs[]){doublex,y=0;intm;Stringstr;finaldoublePI=3.14159;for(inti=1;i<=3;i++){str=JOptionPane.showInputDialog("请输入一个浮点数");x=Double.parseDouble(str);System.out.println("x="+x);
m=(x<0)?1:((x<20)?2:3);switch(m){case1:y=Math.abs(x);break;case2:y=1;for(intj=1;j<=x;j++)y*=j;break;case3:y=Math.log(x);break;}System.out.println("y="+y);}System.exit(0);}}计算结果如下x=-6.0y=6.0x=15.0y=1.307674368E12x=54.0y=3.9889840465642745while和do…while语句的区别:初始条件成立时,结果一致;初始条件不成立时,结果不一致三种循环应用情况:最佳(思维、喜欢、接受、爱好)三种循环的关系:可以相互替代总结返回longresult=1;longresult=1;while(n>0)do{
{result*=n--;result*=n--;}while(n>0);}循环嵌套是指在循环体中包含有循环语句的情况。三种循环语句即可以自身进行嵌套,也可以相互进行嵌套构成多重循环。多重循环自内向外展开,即先执行内循环,后执行外循环。多重循环不允许相互交叉。//分别输出1!、2!、3!、...6!以及它们的和publicclassFactorial3_11{publicstaticvoidmain(Stringargs[]){longsum=0;for(inti=1;i<=6;i++){longm=1;for(intj=1;j<=i;j++)m*=j;System.out.println(i+"!="+m);sum+=m;}System.out.println("1!+2!+3!+...+6!="+sum);}}计算结果1!=12!=23!=64!=245!=1206!=7201!+2!+3!+4!+5!+6!=873//使用级数求近似值
publicclassSeries3_12{publicstaticvoidmain(Stringargs[]){doublei,m,n,x,y,m1;for(i=0.2;i<1;i+=0.2){m1=Math.exp(i);m=1;n=1;x=1;y=1;
do{x*=i;y*=n;n++;m+=x/y;}while(x/y>0.000001);System.out.println("i="+i+""+"结果m1="+m1);System.out.println("i="+i+""+"结果m="+m);}}}
ex=1+x/1!+x2/2!+…+xn/n!
其中X=0.2、0.4、…1.0计算精度为0.000001
跳转语句即强行改变程序执行顺序的语句,其中break语句在switch语句中已得到应用。只使用break只能退出内循环;要想达到从内循环体中直接跳转出外循环的目的,必需与label标号语句连用
。//计算1+2+3+...直到所加和大于1000为止publicclassSum3_13{publicstaticvoidmain(Stringargs[]){inti,m=0;for(i=1;;i++)//{m+=i;if(m>1000)break;}System.out.println("i="+i+"结果="+m);}}程序运行结果i=45结果=1035//证明自然数3--10000之间的数是否符合角谷猜想//角谷猜想:任何正整数n,如果是偶数则除以2(n/2);如果是奇数,则乘3加1//(3*n+1)得到一个新数,继续这样处理,最后的数一定是1publicclassQuess3_14{publicstaticvoidmain(Stringargs[]){doublei,n;search:/*语句标号*/for(i=3;i<=10000;i++){n=i;do{if(n%2==0)n/=2;elsen=n*3+1;if(n<1){System.out.println("i="+i);System.out.println("thisguessisfail");breaksearch;//退出for循环体
}}while(n==1);}System.out.println("数3到10000之间的数符合角谷猜想");}}运行结果数3到10000之间的数符合角谷猜想//求解2--100之间的素数(素数是指除了能被1和自身整除外,//不能被其他数所整除的数publicclassSamp3_15{publicstaticvoidmain(Stringargs[]){inti,j,half,n;for(i=2;i<100;i++){n=i;half=n/2;for(j=2;j<=half;j++)if(n%j==0)break;if(j>half)System.out.println("素数="+i);}}}在循环体中,如果自然数n能够被指定范围的数整除,那么这个数就不是素数,使用break语句从循环体退出,再试下一个Break语句在程序还没有执行完循环时,强行退出循环,执行循环体后面的语句。而continue语句只结束本次循环,即本次循环不再执行continue语句后面的语句,继续执行下一次循环语句或循环判定。//输出1--5除了3以外的数publicclassNumber3_16{publicstaticvoidmain(Stringargs[]){for(inti=1;i<=5;i++){if(i==3)continue;elseSystem.out.println("i="+i);}}}计算结果如下i=1i=2i=4i=5//求当0<n<20时n!大于100而小于2000的n值publicclassQuery3_17{publicstaticvoidmain(Stringargs[]){intn=1,m=1;for(n=1;n<20;n++){m*=n;if(m<=100)continue;elseif(m>2000)break;System.out.println(n);}}}如果结果值在100—2000之间,就输出n的值;结果值小于100,就使用continue语句,继续循环读取下一个n值,结果值大于2000,使用break语句直接退出循环由于是从循环语句中间跳出,尚未进入条件判断语句,n++也没有执行,因此最后输出时不必做n-1运算练习与习题1、填空题a)所有程序都可以用三种类型的控制结构编写:___、___和___。b)___结构当条件为真时执行一个动作,而当条件为假时执行另一个动作。c)对一系列指令执行指定的次数称为___循环。d)当不知道一系列语句要重复执行多少次时,可以用一个___值终止循环。2、写出4种不同的Java语句,实现对整数变量x加1。3、判断下面的说法是否正确。如果错误,请说明原因。a)default选项在switch选择结构中是必需的。b)在switch选择结构中,最后一个选项中break是必需的。c)如果x>y为真或者a<b为真,则表达式(x>y&&a<b)为真。d)包含(||)运算符的表达式,如两个操作数中任意一个为真,则该表达式为真。4、编写Java语句,实现下面各任务:a)用for结构求1到99之间的奇数之和,假定已经声明了整数变量sum和count。b)用pow方法计算浮点数2.5的3次幂。c)用while循环和计数器变量i打印1到20之间的整数,假定已声明了变量i,但未初始化,要求每行只打印5个整数。提示:使用求模计算i%5。如果表达式值为0,打印一个换行符;否则,打印一个制表符。假定程序是个应用程序,用方法System.out.println()输出换行符,用方法System.out.print(“\t”)输出制表符。d)用for结构重新实现上题。5、编写应用程序,找出几个整数中的最小值。假定读入的第一个数值表示用户要输入的数值个数。publicclassExa3_6{publicstaticvoidmain(Stringargs[]){inta=100;intb,c,d,e;while(a<1000){b=a/100;c=(a-b*100)/10;d=a%100-c*10;e=b*b*b+c*c*c+d*d*d;if(a==e)System.out.println("a="+a+"b="+b+"c="+c+"d="+d);a++;}}}水仙花数是指其个位、十位和百位三个数的立方和等于这个三位数本身,求出所有的水仙花数。鸡翁一,值钱五;鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问鸡翁、母、雏各几何?publicclassCock{publicstaticvoidmain(Stringargs[]){intx,y,z;for(x=0;x<20;++x)for(z=0;z<=100;z+=3){y=100-x-z;if((y>=0)&&(5*x+3*y+z/3==100))System.out.println("Cock="+x+",hen="+y+",chichen="+z);}}
}投资分析程序设计1、假定年存款利率d保持不变,本金为一固定值时,采取复利方式,经过n年,存款总额是多少?2、假定年存款利率d保持不变,本金为一固定值时,采取复利方式,达到预期的存款总额,需要多少年?3、假定年存款利率d保持不变,采取复利方式,希望经过n年存款总额达到预期值,应投入本金是多少?4、本金为一固定值时,采取复利方式,经过n年,到预期的存款总额年存款利率应是多少?设d为年利率,x为本金,n为存款年限,z为存款总额预期值,采取利滚利方式,计算公式如下:
z=x(1+d)nx=z/(1+d)nn=(log(z)-log(x))/log(1+d)
d=(z/x)1/n-1importjavax.swing.JOptionPane;publicclassTzfx3_1{publicstaticvoidmain(Stringargs[]){doublex,y,z,d,n;inti;Stringstr;System.out.println("本程序的功能是,输入本金数、年利率");System.out.println("和存入年限,输出预期达到存款总额");str=JOptionPane.showInputDialog("请输入本金数");x=Double.parseDouble(str);str=JOptionPane.showInputDialog("请输入年利率%");d=Double.parseDouble(str);d=d/100.00;str=JOptionPane.showInputDialog("请输入存入年限");n=Double.parseDouble(str);z=Math.pow(1+d,n)*x;y=(z-x)*100.00;i=(int)y;y=i/100.00;System.out.println("预期存款总额为z="+z);System.out.println("本金x="+x+"利息y="+y);System.exit(0);}}importjavax.swing.JOptionPane;publicclassTzfx3_2{publicstaticvoidmain(Stringargs[]){doublex,z,d,y;intn;Stringstr;System.out.println("本程序的功能是,输入本金数、年利率");System.out.println("和预期达到存款总额,输出存入年限");str=JOptionPane.showInputDialog("请输入本金数");x=Double.parseDouble(str);str=JOptionPane.showInputDialog("请输入年利率%");d=Double.parseDouble(str);d=d/100.00;str=JOptionPane.showInputDialog("请输入预期存款总额");z=Double.parseDouble(str);y=(Math.log(z)-Math.log(x))/Math.log(1+d);n=(int)(y+1);System.out.println("预期存入年限为n="+n);System.exit(0);}}importjavax.swing.JOptionPane;publicclassTzfx3_3{publicstaticvoidmain(Stringargs[]){doublex,z,d,n;inty;Stringstr;System.out.println("本程序的功能是,输入预期达到存款总额");System.out.println("输入年利率和预期存入年限,给出应存入本金数");str=JOptionPane.showInputDialog("请输入预期达到存款总额");z=Double.parseDouble(str);str=JOptionPane.showInputDialog("请输入年利率%");d=Double.parseDouble(str);d=d/100.00;str=JOptionPane.showInputDialog("请输入预期存入年限");n=Double.parseDouble(str);x=z/Math.pow(1+d,n);y=(int)(x+0.005)*100;x=y/100.00;System.out.println("应存入本金数为x="+x);System.exit(0);}}
类由数据成员和方法组成。方法定义类对象的行为或可执行的操作,也可以作为类对象与外界交换信息的界面。方法与其他算法语言的函数、子程序相似,是独立的程序模块。一个类可以有多个方法,通过方法完成特定的功能。方法一旦定义,就可以在不同的程序段中多次调用。方法依附于数据,方法是类的基本成分,方法必须在类内定义,方法必须先定义后使用。使用非本程序段已经定义过的方法要通过类的引用实现。使用方法可以增强程序的结构清晰度,提高编程效率。方法声明[修饰符]返回值类型方法名([参数表]){声明部分语句部分}publicstaticintSquare1(intx){ints;s=x*x;return(s);}1、方法声明包括方法头和方法体两部分。花括号中的部分为方法体2、修饰符可选public、private、protected任一种3、返回值类型反映方法完成所定义的功能之后返回结果的类型4、方法名必须符合标识符定义规则5、参数表用于指定调用该方法时,应该传递的参数个数及类型6、有返回值的方法其方法体中必须含有return(表达式)语句7、不能在方法中再声明其他方法说明方法调用
方法的调用有方法表达式和方法语句两种形式。都以方法名([实参表])的形式出现,只是在程序中的位置不同,前者作为表达式的成分,后者作为独立语句。实参表要与方法定义时的形参个数、类型、顺序保持一致;实参可以是常量、变量或表达式,相邻的两个实参之间用逗号隔开。方法调用执行的过程,首先将实参传递给形参,然后执行方法体。当方法运行结束后,从调用该方法的语句的下一句处继续执行。//定义计算平方值的方法
publicclassFangfa4_2{publicstaticint
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 蘑菇剪纸课程设计
- 2024至2030年中国湿式自动喷水灭火系统行业投资前景及策略咨询研究报告
- 2024年中国轻型钢房市场调查研究报告
- 过程控制给水课程设计
- 2024至2030年中国须边带行业投资前景及策略咨询研究报告
- 模电扩音机课程设计
- 2024至2030年中国海绵肩垫机行业投资前景及策略咨询研究报告
- 内燃机课程设计自我评价
- 2024年MP3反折板项目可行性研究报告
- 车床传动系统图课程设计
- 中外合作办学规划方案
- 医学美容技术专业《中医美容技术》课程标准
- CJJ207-2013 城镇供水管网运行、维护及安全技术规程
- 六年级道德与法治期末测试卷加答案(易错题)
- 三位数除以两位数300题-整除-有标准答案
- 办公室装修工程施工方案讲义
- 医院护理人文关怀实践规范专家共识
- 中国农业银行贷后管理办法
- MOOC 陶瓷装饰·彩绘-无锡工艺职业技术学院 中国大学慕课答案
- 小学科学苏教版四年级上册全册教案(2023秋新课标版)
- 信访纠纷化解预案
评论
0/150
提交评论