(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 stub
String[] 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 stub
Student []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不在数组中");
else
System.out.println("元素55在数组中的位置是:"+s);
}
}