java课堂作业(五)
1、来自 http://ccjsjymg.iteye.com/blog/351087
1 package util; 2 3 /** 4 * 写两个方法,其中一个方法可以把某个整数插入到整型数组的特定位置,数组中原有元素向后移动 5 * 另一个方法能够从整形数组中特定位置删除掉一个元素,数组中原有元素向前移动 6 * @author zhanglu 7 */ 8 public class NuberArrayOperator { 9 /** 10 * 整数插入到整型数组的特定位置,数组中原有元素向后移动 11 * @param array 12 */ 13 public int[] insertNumber(int[] array,int insertIndex,int insertNumber){ 14 if(array == null || array.length == 0){ 15 System.out.println("数组不存在"); 16 return null; 17 } 18 int len = array.length; 19 if(insertIndex >= len || insertIndex < 0){ 20 System.out.println("插入位置不正确,请重新设置"); 21 return null; 22 } 23 int i = 0 ; 24 for(;i < len;){ 25 if(i == insertIndex){ 26 break; 27 } 28 i++; 29 } 30 len++; 31 int[] _array = new int[len]; 32 System.arraycopy(array, 0, _array, 0, array.length); 33 int j = i; 34 int temp = 0; 35 for(;j < _array.length-1;j++){ 36 int t = _array[j+1]; 37 if(temp == 0){ 38 _array[j+1] = _array[j]; 39 }else{ 40 _array[j+1] = temp; 41 } 42 temp = t; 43 44 } 45 _array[i] = insertNumber; 46 return _array; 47 } 48 49 /** 50 * 整形数组中特定位置删除掉一个元素, 51 * 数组中原有元素向前移动 52 */ 53 public int[] removeArray(int[] array,int removeIndex){ 54 if(array == null || array.length == 0){ 55 System.out.println("数组不存在"); 56 return null; 57 } 58 int len = array.length; 59 if(removeIndex >= len || removeIndex < 0){ 60 System.out.println("没有此索引"); 61 return null; 62 } 63 //变相移位法 64 /*int i = 0; 65 for(;i < len;i++){ 66 if(i == removeIndex){ 67 break; 68 } 69 } 70 for(int j = i;j < len-1;j++){ 71 array[j] = array[j+1]; 72 } 73 len--; 74 int[] _array = new int[len]; 75 for(int k = 0;k < len;k++){ 76 _array[k] = array[k]; 77 } 78 */ 79 //替代法 80 int i = 0; 81 int[] _array = new int[len-1]; 82 int n = 0; 83 for(;i < len;i++){ 84 if(i != removeIndex){ 85 _array[n++] = array[i]; 86 } 87 } 88 len--; 89 return _array; 90 } 91 }
2、假设有8支球队
String[] team = {"队1","队2","队3","队4","队5","队6","队7","队8"};
1vs2 1vs3 1vs4 .... 1vs8
2vs1 2vs3 2vs4 .... 2vs8
...
8vs1 8vs2 8vs3 .... 8vs7
经过分析我们发现 自己不能和自己比赛 所以应该有一个判断语句 continue出循环
1 String[] team = {"队1","队2","队3","队4","队5","队6","队7","队8"}; 2 for (int i=0;i<=7;i++){ 3 for(int j=0;j<=7;j++){ 4 if(i==j) 5 { 6 continue; 7 } 8 System.out.print(team[i]+"vs"+team[j]+" "); 9 } 10 System.out.println(); 11 }
运行如下:
出错了,这样不对啊
待补充。。。
3、谷歌了一下,脑子这时不好使了,该休息了啊。。。
1 public static int getNum(Integer num){ 2 int[] nums=new int[4]; 3 nums[0]=num/1000;//取出千位数字 4 nums[1]=num%1000/100;//取出百位数字 5 nums[2]=num%100/10;//取出十位数字 6 nums[3]=num%10;//取出个位数字 7 Arrays.sort(nums);//排序,从小到大; 8 int a=nums[0]*1000+nums[1]*100+nums[2]*10+nums[3];//min 9 int b=nums[3]*1000+nums[2]*100+nums[1]*10+nums[0];//max 10 int c=b-a; 11 System.out.println(c+"="+b+"-"+a); 12 return c; 13 }
1 public static int getStep(Integer num){ 2 int count=0;//计数 3 while(num!=6174){ 4 num=getNum(num); 5 count++; 6 } 7 System.out.println("共用"+count+"步"); 8 return count; 9 }
1 getStep(5735);