时间是2017年5月6日,青年节刚过,坐标上海,沪漂2个月。
就这样简短地开始吧。 by:slowcity
【案例分析1】
要求定义一个int 型数组a,包含100 个元素,保存100个随机的4 位数。再定义一个int 型数组b,包含10 个元素。统计a 数组中的元素对10 求余等于0 的个数,保存到 b[0]中;对10 求余等于1 的个数,保存到b[1]中,……依此类推
一般看到这类的最基本的思路:1先建立一个含数组存随机四位数 2检索数组,进行条件运算计数 3将计数结果存储到新的数组 4输出打印新数组刚开始的我-菜鸟级新手的思路:看完代码感觉太耿直的boy 1 import java.util.Random;
2 public class Demo1 { 3 public static void main(String[]args){ 4 int a[]=new int [100]; 5 int b1=0 ,b2=0,b3=0,b4=0,b5=0,b6=0,b7=0,b8=0,b9=0,b10=0; 6 for(int i=0;i<a.length;i++){ 7 int max=9999; //生成100个4位随机数,并保存到数组中 8 int min=1000; 9 Random random = new Random(); 10 int s = random.nextInt(max)%(max-min+1) + min; 11 a[i]=s; 12 System.out.print (a[i]+" "); 13 if(a[i] / 10==0){ //将数组中元素对10求余运算,并计数 14 b1++; 15 System.out.print (b1) ; 16 }else if (a[i]%10==1){ 17 b2++; 18 }else if(a[i]%10==2){ 19 b3++; 20 }else if(a[i]%10==3){ 21 b4++; 22 }else if (a[i]%10==4){ 23 b5++; 24 }else if(a[i]%10==5){ 25 b6++; 26 }else if(a[i]%10==6){ 27 b7++; 28 }else if (a[i]%10==7){ 29 b8++; 30 }else if(a[i]%10==8){ 31 b9++; 32 }else if(a[i]%10==9){ 33 b10++; 34 } 35 } 36 int b[]=new int [10]; //定义新的数组,存储计数 37 b[0]=b1; 38 b[1]=b2; 39 b[2]=b3; 40 b[3]=b4; 41 b[4]=b5; 42 b[5]=b6; 43 b[6]=b7; 44 b[7]=b8; 45 b[8]=b9; 46 b[9]=b10; 47 for(int j=0;j<b.length;j++){ 48 System.out.println(b[j]); //使用for循环,打印新的数组 49 } 50 } 51 }
优化之后
【优化一】相比较而言,代码的长度少了一大半,算法的逻辑性更强了 1 public class Demo2 { 2 public static void main(String[]args){ 3 int a[]=new int [100]; //声明长度为100的数组a 4 int b[]=new int [10]; //声明长度为10的数组b 5 for(int i=0;i<a.length;i++){ //生成4位数,存储在a数组中 6 a[i]=(int)(10000*Math.random()); 7 } 8 for(int j=0;j<b.length;j++){ //循环体嵌套 9 int sum=0; 10 for(int i=0;i<a.length;i++){ 11 if(a[i]%10==j){ 12 sum++; 13 } 14 } 15 b[j]=sum; 16 System.out.println(b[j]); //打印数组b 17 } 18 } 19 }
【优化二】 1 import java.util.Random; 2 3 public class RadomDemo{ 4 public static void main(String[] args){ 5 int [] a=new int[100]; 6 int [] b=new int [10]; 7 Random ran=new Random(); //定义run方法-生成随机数 8 int index=0; 9 while(index<100){ //使用while进行条件筛选 10 int tmp=ran.nextInt(); //生成随机数,且筛选 ---此处在代码运行时会慢很多 11 if((tmp<=9999&&tmp>=1000)){ 12 a[index]=tmp; //将筛选的随机数进行存储 13 index ++; 14 System.out.println(tmp); //此处输出不必要 15 } 16 } 17 System.out.println("-----------------------------------"); 18 for(int j=0;j<10;j++){ //嵌套循环 19 int num=0; 20 for(int i:a){ //for-each增强语句,遍历数组 21 if(i%10==j){ 22 num++; 23 } 24 } 25 b[j]=num; //将计数结果赋值给数据b 26 System.out.println(b[j]); 27 } 28 } 29 }
学习总结:方法很重要,最重要的是简化算法,凝练代码。
时间: 2024-10-08 09:04:00