java学习之实验四

(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);
	}
}


  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值