java从入门到精通-第4章_第1页
java从入门到精通-第4章_第2页
java从入门到精通-第4章_第3页
java从入门到精通-第4章_第4页
java从入门到精通-第4章_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

4数组Java种基本的排序方法,然后是数组的使用。有些内容放在本章讲有些早,但为了使全书的publicclasspublicclassAverageTemperatures{publicstaticvoidmain(Stringargs[]){intScannersc=newScanner(System.in);{}}程序首先定义了一系列的变量,count用来表示第几天,next用来存放每天的气温,sumaverage是用气温的总和除以天数得到的平均值。下面定义了一个Scanner对象,Scanner是一个使用正规表达式来解析基本类型和字符串的简单文本扫描器,可以用来用户输入的气温。在循环语句中调用该类的nextDouble()方法,用户输入的气温,把它放入next中,然后加入sum中。循环结束后求得气温的平均值average。Java的数组可以看作一种特殊的对象,准确地说是把数组看作同种类型变量的集合。在ArrayTypeArrayTypeArrayName[];ArrayType[]时多个数组,使用起来较为方便,所以程序员一般使用第二种方法。下面intintintarray1[int[]了两个数组array2和array3,效果和第一行的方式相同。问它的任何元素。这时候,可以用new对数组分配内存空间,格式如下。array1=newint 号不是数组的长度,而是比数组的长度小1。 给int型变量 publicclass{publicstaticvoidmain(Stringargs[{int[]array1=new }}Exceptioninthread"main"java.lang.ArrayIndexOutOfBoundsException:5atArrayException.main(ArrayException.java:4)程序首先了一个大小为5的int类型数组,前面已经讲到,它的下标最大只能是4。但在程序中却尝试array1[5],显然是不正确的。程序会正常通过编译,但Exceptioninthread"main"java.lang.ArrayIndexOutOfBoundsException:5atArrayException.main(ArrayException.java:4) publicclasspublicstaticvoidmain(Stringpublicclasspublicstaticvoidmain(Stringargs[byte[]byteArray=newchar[]charArray=newint[]intArray=newlong[]longArray=newfloat[]floatArray=newfloat[1];String[]stringArray=newString[1];System.out.println("byte="+byteArray[0]);//打印出各个数组的默认初始化}}int[]array1=newint[5];int[]array1=newint[5];intint[]publicclasspublicstaticvoidmain(Stringargs[int[]array1=newpublicclasspublicstaticvoidmain(Stringargs[int[]array1=newfor(inti;i<5;i++)for(inti;i<5;i++)}}length量,也就是length变量,这个变量指的是数组的长度。例如,创建下面一个数组:int[]array1=newint for(int importimportpublicclass{publicstaticvoidmain(Stringargs[{ intdouble[]temperature=newScannersc=newScanner(System.in);{ }{elseif(temperature[count]>average)System.out.println("第"+(count+1)+"天气温等于平均气温}}}组形式存在的,而数组拷贝是Java提供的一个方便的操作。 如果读者以前接触过C语言或其他参数语言,可能会知道命令行参数。命令行参数就是据或者通过标准输入输出用户输入的参数(现在比较流行使用Scanner类)。Javamain方法,而这个方法带有publicclass{publicstaticvoidmain(Stringargs[{for(inti=0;i<args.length;i++)}}javaArgsDemoname 0个参数1个参数3个参数注意:执行程序令中,java和程序名并不在参数列表之中。参数列表的第一个参数两个数组array1和array2,执行下面语句。 publicclasspublicclasspublicstaticvoidmain(Stringargs[int[]int[] for(inti=0;i<array1.length;i++)for(inti=0;i<array2.length;i++)for(inti=0;i<array1.length;i++)for(inti=0;i<array2.length;i++)System.out.println("改变array2[0]的值"); }}改变array2[0]的值然该方法并不合适。可以使用System类中的arraycopy组toArray,在指定位置toIndex结束,length个元素。注意目标数组必须有足够的空4-1int[]int[]int[]int[] publicclasspublicclass{publicstaticvoidmain(Stringargs[{int[]int[]array2=newint[20];for(inti=0;i<10;i++)for(inti=0;i<array2.length;i++)}}0然后将array101234567890选择排序、冒泡排序、快速排序3种算法。长度为n的数组进行n趟遍历,第一趟遍历选出最大(或者最小)的元素,将之与数组的第之与数组的第二个元素交换。这样遍历n次后,得到的就为降序(或者升序)数组。inttemp;inttemp;void{intindex;{

for(int{}} }publicpublicclasspublicstaticvoidmain(Stringargs[int[intindex;intfor(inti=0;i<intArray.length;i++)for(int{{}}for(inti=0;i<intArray.length;i++) }} 683 void{for(inti=0;i<n;i++)for(intj=i;j<n;j++)}publicpublicclasspublicstaticvoidmain(Stringargs[int[for(inti=0;i<intArray.length;i++)intfor(int{for(int{{}}}for(inti=0;i<intArray.length;i++) }} 683 组的排序,尽管读者现在接触这么复杂的排序可能 publicclass{publicstaticvoidmain(Stringargs[{int[intindex;intfor(inti=0;i<intArray.length;i++)for(int{{}}for(inti=0;i<intArray.length;i++) }}间。Java是支持数组的,并利用多个下标来表示。本节的主要内容以二维数组为例124-14-1int[][]twoD=new for(inti=0;i<twoD2.length;i++)for(inti=0;i<twoD2.length;i++)publicpublicclasspublicstaticvoidmain(Stringargs[int[][]int[][]twoD2=newint[5][5];intk=1;for(inti=0;i<twoD2.length;i++) {for(intj=0;j<twoD1[i].length;j++) }for(inti=0;i<twoD2.length;i++){for(intj=0;j<twoD2[i].length;j++) }}}输出数组 3456789 输出数组123456789int[][]twoD=new publicclasspublicstaticvoidmain(Stringargs[int[][]twoD1={publicclasspublicstaticvoidmain(Stringargs[int[][]twoD1={int[]array1=newint[5];//把twoD的第一行赋值给array1for(inti=0;i<array1.length;i++) for(inti=0;i<twoD1.length;i++){for(intj=0;j<twoD1[i].length;j++) }}}669875 交换后的二维数组答案是肯定的。这一节将会介绍这类不规则数组。例如,可以一个二维数组:int[][]twoD=newint[4][ twoD[0]=newtwoD[0]=newint[1];twoD[1]=newint[2];twoD[2]=newint[3];twoD[3]=new经过上面的,在二维数组twoD中,第一行有一个元素,第二行有两个元素,第三了不规则数组的和使用。publicpublicclasspublicstaticvoidmain(Stringargs[int[][]twoD=newint[4][];intk=1;for(inti=0;i<twoD.length;i++){for(intj=0;j<twoD[i].length;j++) }}}1123456789表示第i 4-2所示,需4-212publicclass publicpublicstaticvoidmain(Stringargs[doublerate[int[][]balance=newint[10][4];for(intj=0;j<ra {doubleinc=balance[i-1][j]*rate[j];} for(inti=0;i<balance.length;i++){System.out.print(i+"for(intj=0;j<balance[i].length;j++)}}}程序首先定义了一个一维的double型数组rate,用来不同的利率,然后定义了一个描1041000,表示本金。计算每年在0123456789For-EachJ2SE5for循环的一种缩略形式,通过它可以简化复杂for循环结构。For-Each循环主要用在集合(如数组)中,按照严格的方式,从开始到结 F

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论