Java 基础编程二
9. 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 public static int sumNum(){ 2 Scanner sc = new Scanner(System.in); 3 System.out.println("请输入a的值:"); 4 int a = Integer.parseInt(sc.next()); 5 System.out.println("请输入个数:"); 6 int count = Integer.parseInt(sc.next()); 7 int temp = 0; 8 int sum = 0; 9 for (int i = 1; i <=count ; i++) { 10 temp = temp*10+a; 11 sum+=temp; 12 } 13 return sum; 14 }
运行结果:
10. 一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程 找出1000以内的所有完数。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 public static String wanshu(){ 2 StringBuilder sb = new StringBuilder(); 3 for (int i = 1; i <1000 ; i++) { 4 int sum = 0; 5 for(int j = 1;j<=i/2;j++){ 6 if(i%j==0){ 7 sum+=j; 8 } 9 } 10 if(i == sum){ 11 sb = sb.append(i+","); 12 } 13 } 14 return sb.toString(); 15 }
运行结果:
11. 一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高?
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 public static void freefall(){ 2 double h = 100; 3 double sumh = 100; 4 for (int i = 0; i < 10; i++) { 5 h/=2; 6 sumh+=h; 7 } 8 System.out.println("第10次落地时共经过:"+sumh+"米"); 9 System.out.println("第10次反弹高度为:"+h+"米"); 10 }
运行结果:
12. 企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 public static void bonus(){ 2 System.out.println("请输入当月利润:"); 3 Scanner sc = new Scanner(System.in); 4 double i = Double.parseDouble(sc.next()); 5 if(i<=100000){ 6 System.out.println("应发放奖金数:"+i*0.1); 7 }else if(i>100000&&i<=200000){ 8 System.out.println("应发放奖金数:"+(100000*0.1+(i-100000)*0.75)); 9 }else if(i>200000&&i<=400000){ 10 System.out.println("应发放奖金数:"+(100000*0.1+100000*0.75)+(i-200000)*0.05); 11 }else if(i>400000&&i<=600000){ 12 System.out.println("应发放奖金数:"+(100000*0.1+100000*0.75+200000*0.05)+(i-400000)*0.03); 13 }else if(i>600000&&i<=1000000){ 14 System.out.println("应发放奖金数:"+(100000*0.1+100000*0.75+200000*0.05+200000*0.03)+(i-600000)*0.015); 15 }else{ 16 System.out.println("应发放奖金数:"+(100000*0.1+100000*0.75+200000*0.05+200000*0.03+400000*0.015)+(i-1000000)*0.01); 17 } 18 }
运行结果:
13. 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 public static void wanquan(){ 2 double temp = 0; 3 for (int i = 0; i < 999; i++) { 4 temp = (int)Math.sqrt(i+100); 5 if(temp*temp == 100+i){ 6 temp = (int)Math.sqrt(i+268); 7 if(temp*temp == i+268){ 8 System.out.println("这个数是"+i); 9 } 10 } 11 } 12 13 }
运行结果:
14. 输入某年某月某日,判断这一天是这一年的第几天?
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 public static int day(){ 2 Scanner sc = new Scanner(System.in); 3 String[] arrdate = new String[3]; 4 int i = 0; 5 System.out.println("请输入日期:"); 6 //日期输入格式为yyyy-mm-dd,假定日期输入为正确数据 7 String date = sc.next(); 8 StringTokenizer st = new StringTokenizer(date, "-"); 9 while(st.hasMoreTokens()){ 10 arrdate[i] = st.nextToken(); 11 i++; 12 } 13 String year = arrdate[0].charAt(0) == 0?arrdate[0].substring(1):arrdate[0]; 14 String month = arrdate[1].charAt(0) == 0?arrdate[1].substring(1):arrdate[1]; 15 String day = arrdate[2].charAt(0) == 0?arrdate[2].substring(1):arrdate[2]; 16 int y = Integer.parseInt(year); 17 int m = Integer.parseInt(month); 18 int d = Integer.parseInt(day); 19 if(m == 1){ 20 return d; 21 } 22 if(m == 2){ 23 return 31+d; 24 } 25 if(y%4==0&&y%100!=0||y%400==0){ 26 d++; 27 } 28 switch (m){ 29 case 3:return 59+d; 30 case 4:return 90+d; 31 case 5:return 120+d; 32 case 6:return 151+d; 33 case 7:return 181+d; 34 case 8:return 212+d; 35 case 9:return 243+d; 36 case 10:return 273+d; 37 case 11:return 304+d; 38 case 12:return 334+d; 39 default:return -1; 40 } 41 }
运行结果: