java学习日记-基础-随机数组的求余运算



      时间是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

java学习日记-基础-随机数组的求余运算的相关文章

Java学习日记基础篇(七) —— 数组、排序

数组 为什么要有数组? 案例:一个养鸡场有六只鸡,他们的体重分别为3kg,5kg,1kg,3.4kg,2kg,50kg.请问这六只鸡的总体重和平均体重是多少? 1 public class test5 2 { 3 public static void main(String[] args) 4 { 5 //如果没有数组就要定义六个变量,然后算出结果,太麻烦了 6 //现在我们定义一个可以存放6个float类型的数组 7 float arr[] = new float[6]; 8 //给数组的各个

java学习日记-基础-字符串内容替换

代码和内容均来自网络,非原创,自己就是对代码进行了一些简单的注释,帮助自己理解. import java.util.Scanner; /** * * @author sunzc 转换字符串,大写变小写,小写变大写,数字不变,其他变为* */ public class Transfer { public static void main(String[] args) { // String str = "ABC123abcfadfjbJBHJHJDsa"; String str = &q

Java学习日记基础篇(六)—— 抽象类、接口、final

抽象类 为什么要有抽象类? 因为父类方法有不确定性,我们在Animal中定义了一个方法,但是它会被子类的方法覆盖掉,我们就不知道这个方法原本是做什么的 1 public class test1 2 { 3 public static void main(String[] args) { 4 } 5 } 6 7 class Animal 8 { 9 String name; 10 int age; 11 12 //动物会叫 13 public void cry() 14 { 15 System.o

java学习日记-基础-列出2~100内的素数

素数的概念:一个整数如果只能整除1和它本身,那么这个整数就是一个素数 方法一:素数是除去能被2整除.3整除.5整除.7整除的整数,但包含2,3,5,7 public class Sushu { public static void main(String[]args){ String str="2 3 5 7 "; for(int i=2;i<=100;i++){ if(i%2==0||i%3==0||i%5==0||i%7==0 ){ //:逻辑判断,筛选 continue;

Java学习日记(一)基础

标识符: 由26个英文字母大小写,数字:0-9 符号:_ $ 组成 定义合法标识符规则: 1.数字不可以开头. 2.不可以使用关键字. 3.Java中严格区分大小写. Java中的注释格式: 单行注释: 格式: //注释文字 多行注释: 格式: /* 注释文字*/ 文档注释: 格式:/** 注释文字 */ 常量: 常量表示不能改变的数值. java中常量的分类: 1.整数常量.所有整数 2.小数常量.所有小数 3.布尔型常量.较为特有,只有两个数值.true 和false. 4.字符常量.将一个

Java学习:二 基础

2014 - 5 - 22 上午 Java对大小写敏感. 点号(.)用于调用方法,Java的能用语法是: object.method(parameters); Java中的常量声明使用final关键字.且仅能赋值一次.习惯上,常量名大写. 可使用static final 定义一个类常量,以便在一个类中的多个方法中使用. 类常量定义在main方法外部,以便同一类其它方法可以使用.若使用public关键字,则其它类的方法也可以使用此常量. 字符串: Java中,允许使用+号拼接两个字符串. Java

java学习日记第一天

java 学习日记 第一天 java学习准备工作 首先环境配置:一个是jdk安装,另一个编译工具 eclipse ,安装下载教程网上很多 找了一个照着做就行 : 上述步骤完成,我们就可以打开eclipse进行我们第一个程序的编写啦当然是编写我们熟悉的helloWorld创建一个Java Perfect 目前好像基本都习惯用工程管理我们就建一个java工程然后点开工程在src右键new一个class,不用问这是啥这是啥,先把程序跑起来,慢慢就懂了我们在{}写我们的程序,这就好比helloworld

关于大整数的加减乘除求余运算 java

自己用java 实现了大字符串整数的加减乘除和求余运算, 加减法的算法是模拟手工笔算的计算过程, 除法就是从最高位不停的减操作, 乘法的算法 :遍历一个数的各个位数以及他所在位置,另一个数根据这个数的位置末位添n个0,然后累加次数为这个位置数的数值 原创代码如下: public class Demo6 { public static void main(String[]args){ System.out.println(add("-989","989")); Sys

Swift学习笔记-基本运算符(Basic Operators)-求余运算符

求余运算(a % b)是计算b的多少倍刚刚好可以容入a,返回多出来的那部分(余数). 注意:求余运算(%)在其他语言也叫取模运算.然而严格说来,我们看该运算符对负数的操作结果,"求余"比"取模"更合适些. 我们来谈谈取余是怎么回事,计算9 % 4,你先计算出4的多少倍会刚好可以容入9中: 2倍,非常好,那余数是1(用橙色标出) 在 Swift 中可以表达为: 9 % 4 // 等于 1 为了得到a % b的结果,%计算了以下等式,并输出余数作为结果: a = (b