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



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章