java学习之实验四

来源:互联网 发布:淘宝账号自助开通 编辑:程序博客网 时间:2024/05/16 11:13

(1)有一列乱序的字符,‘a’、‘d’、‘m’、‘z’、‘h’、‘c’、‘o’,排序并按照英文字母表的逆序输出。

解:按照字母表排序也就是按照ASCLL码值进行排序,只需要定义一个String型数组应用Arrays.sort函数进行排序,然后进行输出就可以了。

package test4;import java.util.Arrays;public class test4_a {public static void main(String[] args) {// TODO Auto-generated method stubString[] sores={"a","d","m","z","h","c","o"};int i,j;j=sores.length;Arrays.sort(sores);for(i=j-1;i>=0;i--)System.out.print(sores[i]+"  ");}}


(2)编写一个程序,提示用户输入学生数量、各自的姓名和他们的成绩,并按照成绩的降序来打印学生的姓名。


解:定义学生类用以介绍所有有关学生的信息包括姓名、成绩。并且在类中定义方法用以接受以及返回变量姓名和成绩。排序方法可在类中定义也可在类外定义。在main函数中进行输入以及根据成绩排序输出即可。


package test4;import java.util.Scanner;class Student{private String name;private double score;public void setName(String name){this.name=name;}public String getName(){return this.name;}public void setScore(double score){this.score=score;}public double getScore(){return score;}}public class test4_b {public static void main(String[] args) {// TODO Auto-generated method stubStudent []stuArr;int num;Scanner reader=new Scanner(System.in);num=reader.nextInt();stuArr=new Student[num];for(int i=0;i<num;i++){stuArr[i]=new Student();stuArr[i].setName(reader.next());stuArr[i].setScore(reader.nextDouble());}for(int i=0;i<num;i++){for(int j=i+1;j<num;j++){if(stuArr[i].getScore()>stuArr[j].getScore()){Student temp=new Student();temp=stuArr[i];stuArr[i]=stuArr[j];stuArr[j]=temp;}}}for(int i=0;i<num;i++){System.out.println(stuArr[i].getName()+"\t"+stuArr[i].getScore());}}}


(3)现有如下的一个数组:int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5}

要求将数组中值为0的项去掉,将不为0的值存入一个新的数组。


解:定义一个新的数组大小可以取原数组的大小,遍历一遍数组判断非0元素存入新的数组中,并设立一个计数器用以记录非0元素的数量,便于待会输出使用。(也可以使用add函数进行操作,此处就不给出代码了)


package test4;public class test4_c {public static void main(String[] args){int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};int i,len;len=oldArr.length;int j=0;int []a = new int[len]; for(i=0;i<len;i++){if(oldArr[i]!=0){a[j]=oldArr[i];j=j+1;}}for(i=0;i<j;i++)System.out.print(a[i]+"   ");}}


(4)定义一个长度为n的整型数组,初始值为1~200之间的随机整数。要求:对数组的元素值进行排序,打印排序后的数组。在数组中查找整数55,并输出相应的提示信息。


解:定义数组用来存储随机整数,因为Math.random是产生0到1随机浮点数,所以要用强制类型转换,要产生1~200之间数所以要乘以200并加1.然后利用Arrays.binarySearch进行查找,输出结果即可。


package test4;import java.util.Arrays;import java.util.Scanner;public class test4_d {public static void main(String[] args) {int n;int i;Scanner in = new Scanner(System.in);System.out.println("请输入数组的长度:"); n = in.nextInt();int []sores=new int[n];for(i=0;i<n;i++){sores[i]=(int) (Math.random()*200+1);}Arrays.sort(sores);for(i=0;i<n;i++)System.out.print(sores[i]+" ");System.out.println();int s;s=Arrays.binarySearch(sores,55);if(s<0 || s>n)System.out.println("55不在数组中");elseSystem.out.println("元素55在数组中的位置是:"+s);}}


0 0