Java练习题(三)

任务1:

 写两个方法,其中一个方法可以把某个整数插入到整型数组的特定位置,数组中原有元素向后移动;另一个方法能够从整形数组中特定位置删除掉一个元素,数组中原有元素向前移动

public class InsertDeleteArray {
	
	static int[] arrayCopy;//保存原有数据
	
	/**
	 * @param array 原数组
	 * @param index 插入下标
	 * @return
	 */
	public static int [] insertArry(int[] array,int index,int value){
		arrayCopy = new int[array.length+1];
		for(int i = 0;i <= array.length;i++){
			if(i < index){//如果i小于index,则直接赋值
				arrayCopy[i] = array[i];
			}else if(i == index){//如果i等于index,将value赋值
				arrayCopy[i] = value;
				
			}else{
				arrayCopy[i] = array[i-1];//将原数组下标-1赋值给新数组
			}
			
		}
		array = arrayCopy;
		return array;
	}

    /**
     * @param array 原数组
     * @param index 删除下标
     * @return
     */
    public static int [] deleteArry(int[] array,int index){
    	arrayCopy = new int[array.length-1];
		for(int i = 0;i < array.length;i++){
			if(i < index){//如果i小于index,则直接赋值
				arrayCopy[i] = array[i];
			}else{//如果i大于等于index,则将原数组赋值给现有数组下标-1
				arrayCopy[i-1] = array[i];
			}
		}
		array = arrayCopy;
		return array;
	}
    
    /**
     * @param array
     * 打印数组
     */
    public static void printArray(int[] array){
    	for(int i = 0;i < array.length;i++){
    		System.out.print(array[i]+" ");
    	}
    	System.out.println();
    }
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		int[] array = new int[]{1,5,6,8,9,7,3,2};
		//int[] arrayCopy ;
		int index = 5;
		int value = 0;
		System.out.println("原始数据");
		printArray(array);
		arrayCopy = insertArry(array,index,value);
		System.out.printf("在指定位置%d插入%d\n",index,value);
		printArray(arrayCopy);
		System.out.printf("在指定位置%d删除\n",index);
		arrayCopy = deleteArry(array,index);
		printArray(arrayCopy);
		
	}
	
}

任务2

有偶数支足球队进行单循环比赛,请按照指定算法打印每轮的对阵形势.比如:有如下球队:china,England,Germany,Italy,France,Agentia.

第一轮:

China-----Agentina

England-----France

Germany-----Italy

/**
 * @author 
 * @version 1.0
 * @date 2015年7月24日
 * 第一轮   第二轮  第三轮  第四轮  第五轮
 * 
 * 1-6   1-5   1-4   1-3  1-2
 * 2-5   6-4   5-3   4-2  3-6
 * 3-4   2-3   6-2   5-6  4-5
 *  
 */
public class SingleCycleRace {

	static int[] index = new int[]{0,1,2,3,4,5};
	
	/**
	 * @param country
	 * 打印赛事
	 */
	public static void printRace(String[] country){
		int count = country.length - 1;
		for(int j = 0;j < count;j++){//共有count轮比赛
			System.out.println("第"+(j+1)+"比赛对阵:");//每轮有count/2对阵
			for(int i = 0;i <= count/2;i++){
				//System.out.print(country[index[i]]+"---"+country[index[count-i]]+"  "+index[i]+"---"+index[count-i]);
				System.out.print(country[index[i]]+"---"+country[index[count-i]]+" ");//打印对阵结果
			}
			System.out.println();
			change(index);
			//printfIndex(index);
		}
	}
	
	/**
	 * @param index
	 * 修改下标
	 */
	public static void change(int[] index){
		int end = index[index.length-1];
		int temp = 0;
		for(int i = index.length -1;i >= 1;i--){
			index[i] = index[i-1];
		}
		index[1] = end;
	}
	
	/**
	 * @param index
	 * 打印下标变化
	 */
	public static void printfIndex(int[] index){
		for(int i = 0;i < index.length;i++){
			System.out.print(" "+index[i]);
		}
		System.out.println();
	}
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String[] country = new String[]{
				"china","England","Germany","Italy","France","Agentia"
				};
		printRace(country);
		
	}

}

任务3:

验证数学黑洞  用户输入一个四位数,输出变换到6174的过程

  例如:1234: 4321-1234=3087

                8730-0378=8352

                8532-2358=6174

/**
 * @author WL-PC
 * @version 1.0
 * @date 2015年7月25日
 * 
 * 验证数学黑洞  用户输入一个四位数,输出变换到6174的过程
 * 
 * 原理是将原数可能得到各个位组成的最大值和最小值之差
 */
public class MathematicalBlackHole {

	static int[] numberByte = new int[4];
	
//	/**
//	 * @param number
//	 * @return
//	 * 将输入的数逆序
//	 */
//	public static int reverse(int number){
//		int reverse = 0;
//		int count = 1;
//		while(number != 0){
//			reverse = reverse+(number%10)*(1000/count);
//			number = number/10;
//			count = count*10;
//		}
//		return reverse;
//	}
	/**
	 * @param number
	 * 将传入的数各个位排序
	 */
	public static void sortByte(int number){
		int count = 0;
		while(number != 0){
			numberByte[count] = number%10;
			number = number/10;
			count++;
		}
		Arrays.sort(numberByte);
		//printf(numberByte);
//		System.out.println("===="+maxNumber(numberByte));
//		
//		System.out.println("===="+minNumber(numberByte));
	}
	
//	/**
//	 * @param numberByte
//	 * 打印数组
//	 */
//	public static void printf(int[] numberByte){
//		for(int i = 0;i < numberByte.length;i++){
//			System.out.print(numberByte[i]);
//		}
//	}
	
	/**
	 * @param number
	 * @return
	 * 数组组成最大值
	 */
	public static int maxNumber(int[] number){
		int max = 0;
		int count = 1;
		for(int i = number.length-1; i >= 0;i--){
			max = max + number[i]*(1000/count);
			count = count*10;
		}
		return max;
	}
	
	public static int minNumber(int[] number){
		int min = 0;
		int count = 1;
		for(int i = 0; i < number.length;i++){
			min = min + number[i]*(1000/count);
			count = count*10;
		}
		return min;
	}
	
	/**
	 * @param number 接受输入的数
	 */
	public static void matathematicalBlackHole(int number){
		int poor = 0;
		int max = 0;
		int min = 0;
		if(number == 6174){
			return;
		}else{
			sortByte(number);
			max = maxNumber(numberByte);
			min = minNumber(numberByte);
			poor = max - min;
			System.out.println(max+"-"+min+"="+poor);
			
			matathematicalBlackHole(poor);
		}
	}
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int number = 1000;
		System.out.println("请输入一个四位数");
		Scanner scanner = new Scanner(System.in);
		number = scanner.nextInt();
		matathematicalBlackHole(number);
		//System.out.println(reverse(number));
		//sortByte(number);
	}

}

任务4 将学员成绩按升序排序

/**
 * @author WL-PC
 * @version 1.0
 * @date 2015年7月25日
 * 
 * 验证数学黑洞  用户输入一个四位数,输出变换到6174的过程
 * 
 * 原理是将原数可能得到各个位组成的最大值和最小值之差
 */
public class MathematicalBlackHole {

	static int[] numberByte = new int[4];
	
//	/**
//	 * @param number
//	 * @return
//	 * 将输入的数逆序
//	 */
//	public static int reverse(int number){
//		int reverse = 0;
//		int count = 1;
//		while(number != 0){
//			reverse = reverse+(number%10)*(1000/count);
//			number = number/10;
//			count = count*10;
//		}
//		return reverse;
//	}
	/**
	 * @param number
	 * 将传入的数各个位排序
	 */
	public static void sortByte(int number){
		int count = 0;
		while(number != 0){
			numberByte[count] = number%10;
			number = number/10;
			count++;
		}
		Arrays.sort(numberByte);
		//printf(numberByte);
//		System.out.println("===="+maxNumber(numberByte));
//		
//		System.out.println("===="+minNumber(numberByte));
	}
	
//	/**
//	 * @param numberByte
//	 * 打印数组
//	 */
//	public static void printf(int[] numberByte){
//		for(int i = 0;i < numberByte.length;i++){
//			System.out.print(numberByte[i]);
//		}
//	}
	
	/**
	 * @param number
	 * @return
	 * 数组组成最大值
	 */
	public static int maxNumber(int[] number){
		int max = 0;
		int count = 1;
		for(int i = number.length-1; i >= 0;i--){
			max = max + number[i]*(1000/count);
			count = count*10;
		}
		return max;
	}
	
	public static int minNumber(int[] number){
		int min = 0;
		int count = 1;
		for(int i = 0; i < number.length;i++){
			min = min + number[i]*(1000/count);
			count = count*10;
		}
		return min;
	}
	
	/**
	 * @param number 接受输入的数
	 */
	public static void matathematicalBlackHole(int number){
		int poor = 0;
		int max = 0;
		int min = 0;
		if(number == 6174){
			return;
		}else{
			sortByte(number);
			max = maxNumber(numberByte);
			min = minNumber(numberByte);
			poor = max - min;
			System.out.println(max+"-"+min+"="+poor);
			
			matathematicalBlackHole(poor);
		}
	}
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int number = 1000;
		System.out.println("请输入一个四位数");
		Scanner scanner = new Scanner(System.in);
		number = scanner.nextInt();
		matathematicalBlackHole(number);
		//System.out.println(reverse(number));
		//sortByte(number);
	}

}

任务5: 实现最高成绩的输出
public class MaxScore {

	/**
	 * @param scores 成绩记录
	 * @return 返回最大值 int
	 */
	public static int maxScore(int[] scores){
		int max = 0;
		for(int i = 0;i < scores.length;i++){
			if(scores[i] > max){
				max = scores[i];
			}
		}
		return max;
	}
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[] scores = new int[5];//保存学员输入的成绩
		Scanner scanner = new Scanner(System.in);//扫描器
		int max = 0;//最大值
		System.out.println("请输入5位学员的成绩");
		for(int i = 0;i < scores.length;i++){
			scores[i] = scanner.nextInt();
		}
		max = maxScore(scores);
		System.out.println("考试成绩最高分为:"+max);
		
	}

}

任务6:原始数组为:1,3,-1,5,-2,逆序输出原数组,并将小于0的元素按0存储。

public class ReceverArray {

	static int[] data = new int[]{1,3,-1,5,-2};
	
	/**
	 * @param data 要逆转的数组
	 * @return 逆转后的数组
	 */
	public static int[] receverArray(int[] data){
		int temp = 0;
		for(int i = 0;i < data.length/2;i++){
			temp = data[i];
			data[i] = data[data.length-i-1];
			data[data.length-i-1] = temp;
		}
		return data;
	}
	
	/**
	 * @param data 转化的数组
	 * @return 转化后的数组
	 */
	public static int[] zeroArray(int[] data){
		for(int i = 0;i < data.length;i++){
			if(data[i] < 0){
				data[i] = 0;
			}
		}
		return data;
	}
	
	/**
	 * @param data 要打印的数组
	 */
	public static void printArray(int[] data){
		for(int i = data.length-1;i >= 0;i--){
			System.out.print(data[i]+" ");
		}
	}
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		int[] datas = new int[5];
		System.out.print("原数据:");
		printArray(data);
		System.out.print("\n逆转以后:");
		datas = receverArray(data);
		printArray(datas);
		System.out.print("\n将负值变为0:");
		datas = zeroArray(data);
		printArray(datas);
		
	}
	
}



  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值