1 import java.util.ArrayList; 2 import java.util.Scanner; 3 4 public class Main { 5 public static void main(String args[]) { 6 // System.out.println("请输入一个正整数N"); 7 Scanner sc = new Scanner(System.in); //初始化Scanner对象 8 int numN=sc.nextInt(); //输入 9 ArrayList myNum= new ArrayList(); 10 ArrayList res= new ArrayList(); 11 // System.out.printf("依次输入%d个整数\n",numN); 12 for (int i = 0;i<numN ;i++ ) { 13 int tempNum=sc.nextInt(); 14 myNum.add(tempNum); 15 res.add(tempNum); //保存排序之前的数据 16 } 17 // System.out.println("排序之前的数据:"+myNum.toString()+res.toString()); 18 if(numN%2==0) { 19 // System.out.println("偶数"); 20 //从小到大排序: 21 int tempNum=0; 22 for(int i=0;i<numN;i++) { 23 for (int j=i+1;j<numN;j++) { 24 int i_num=(int) myNum.get(i); 25 int j_num=(int) myNum.get(j); 26 if(i_num>j_num) { 27 tempNum=i_num; 28 myNum.set(i, j_num); 29 myNum.set(j, tempNum); 30 } 31 } 32 } 33 // System.out.println("排序之后的数据:"+myNum.toString()+res.toString()); 34 // System.out.println(myNum.toString()); 35 //开始计算 结果保存在res数组中 下面是偶数情况: 36 for (int i=0;i<numN ; i++) 37 { 38 int zwNum=(int) myNum.get(numN/2); 39 int resTempNum=(int) res.get(i); //保存当前数据 40 if((resTempNum==zwNum) || (resTempNum>zwNum)) { 41 res.set(i, 0); 42 }else { 43 res.set(i, zwNum-resTempNum+1); 44 } 45 } 46 }else { 47 //---------------------------------------------------------------------- 48 // System.out.println("奇数"); 49 //从小到大排序: 50 int tempNum=0; 51 for(int i=0;i<numN;i++) { 52 for (int j=i+1;j<numN;j++) { 53 int i_num=(int) myNum.get(i); 54 int j_num=(int) myNum.get(j); 55 if(i_num>j_num) { 56 tempNum=i_num; 57 myNum.set(i, j_num); 58 myNum.set(j, tempNum); 59 } 60 } 61 } 62 // System.out.println("排序之后的数据:"+myNum.toString()+res.toString()); 63 //开始计算 结果保存在res数组中 下面是奇数情况: 64 for (int i=0;i<numN ; i++) 65 { 66 int zwNum=(int) myNum.get(numN/2); 67 int resTempNum=(int) res.get(i); //保存当前数据 68 if((resTempNum==zwNum) || (resTempNum>zwNum)) { 69 res.set(i, 0); 70 }else { 71 res.set(i, zwNum-resTempNum+1); 72 } 73 } 74 } 75 //输出结果 76 System.out.println(res.toString()); 77 } 78 }