5、Java——循环案例代码详解(2)

简介: 5、Java——循环案例代码详解(2)

案例一

       输出100以内的所有素数,每行显示5个;并求和。


       方法一:通过break结束不是素数的循环,来循环出所有素数,代码如下:

public static void main(String[] args) {
  int i, j;
  int count = 0;
  int sum = 0;
  for (i = 2; i <= 100; i++) {
            //for循环出小于i的数
    for (j = 2; j < i; j++) {
    if (i % j == 0)
                    //如果j能被i整除,则说明i不属于素数,break结束整个循环
      break;
    }
    if (j >= i) {// 也可以写成j==i
    System.out.print(i + " ");
    sum += i;
    count++;
    if (count % 5 == 0) {
      System.out.println();
    }
    }
  }
  System.out.println("100以内的所有素数之和为:" + sum);
  }

       方法二: 通过一个累加变量s,如果这个数除了1和它本身还有其它数能整除的话,s就会>2,只有当s=2,也就是只能被1和它本身整除的情况,才是素数。代码如下:


public static void main(String[] args) {
  // 23:输出100以内的所有素数,每行显示5个;并求和。
  int s=0;
  int court=0;
  int sum=0;
  for (int i = 2; i < 100; i++) {
    s=0;
    for (int j = 1; j <=i; j++) {
    if(i%j==0){
      s++;
    }
    }
    if(s==2){
    System.out.print(i+" ");
    sum+=i;
    court++;
    if(court%5==0){
      System.out.println();
    }
    }
  }
  System.out.println("\n100以内的所有素数之和:"+sum);
  }


案例二

       A、B、C、D分别为0——9之间的整数,求出满足AB+CD=DA条件的数。


       例如:90+09=99


       方法一:解题思路,定义三个整数AB,CD和DA;其中十位的A,C,D存在为0零的情况,所以我定义了三个String类型的a0,b0,c0三个字符串数据,到时候做判断拼接一下即可,具体实现代码如下:

public static void main(String[] args) {
  //前缀0预定义
  String a0,c0,d0;
  int AB,CD,DA;
  for (int a = 0; a < 10; a++) {
    for (int b = 0; b < 10; b++) {
    for (int c = 0; c < 10; c++) {
      for (int d = 0; d < 10; d++) {
      AB=a*10+b;
      CD=c*10+d;
      DA=d*10+a;
      if(AB+CD==DA){
        if (a==0) {
        a0="0";
        }else{
        a0="";
        }
        if (c==0) {
        c0="0";
        }else{
        c0="";
        }
        if (d==0) {
        d0="0";
        }else{
        d0="";
        }       
        System.out.println(a0+AB+"+"+c0+CD+"="+d0+DA);
      }
      }
    }
    }
  }
  }

       方法二:这个方法简单些,直接把满足条件的数字的个位和十位拆开,然后拼接实现。具体代码如下:

public static void main(String[] args) {
  //定义一个变量,用来统计满足条件的数的数量
  int count = 0;
  for (int a = 0; a < 10; a++) {
    for (int b = 0; b < 10; b++) {
    for (int c = 0; c < 10; c++) {
      for (int d = 0; d < 10; d++) {
      if (10 * a + b + 10 * c + d == 10 * d + a) {
        System.out.println(a + "" + b + "+" + c + "" + d + "=" + d + a);
        count++;
      }
      }
    }
    }
  }
  }


案例三

       随机生成一个五位以内的数,然后输出该数共有多少位,每位分别是什么


       实现代码如下:


public static void main(String[] args) {
  int ra = (int) (Math.random() * 10000);
  System.out.println("随机产生的五位以内的数为:" + ra);
  // 四位数
  if (ra / 1000 > 0) {
    System.out.println(ra + "共有四位,每位分别是:");
    int g = ra % 10;
    int s = ra / 10 % 10;
    int b = ra / 100 % 10;
    int q = ra / 1000;
    System.out.print("个位:" + g + " 十位" + s + " 百位" + b + " 千位" + q);
  }
  // 三位数
  else if (ra / 100 > 0) {
    System.out.println(ra + "共有三位,每位分别是:");
    int g = ra % 10;
    int s = ra / 10 % 10;
    int b = ra / 100;
    System.out.print("个位:" + g + " 十位" + s + " 百位" + b);
  }
  // 二位数
  else if (ra / 10 > 0) {
    System.out.println(ra + "共有二位,每位分别是:");
    int g = ra % 10;
    int s = ra / 10;
    System.out.print("个位:" + g + " 十位" + s);
  }
  // 一位数
  else if (ra > 0) {
    System.out.println(ra + "只有个位,个位数是:");
    int g = ra % 10;
    System.out.print(g);
  }
  }


案例四

       输出斐波那契数列数列的前20项


       斐波那契数列特点:


       斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家莱昂纳多·斐波那契(Leonardoda

       Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”, 指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……

       规则:从第三个数开始,每一个数是前面两个数之和:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)


       方法一:用循环+数组的方式实现,代码如下


public static void main(String[] args) {
  System.out.println("输出斐波那契数列数列的前20项:");
  //定义一个存放数列的数组
  int[] fb=new int[21];
  for (int i = 0; i < 20; i++) {
    if(i==1||i==0){
    fb[i]=i;
    }
    else{
    fb[i]=fb[i-1]+fb[i-2];
    }
    System.out.println(fb[i]);
  }
  }
        方法二,定义一个方法,用方法的方式实现,代码如下:
  public static void main(String[] args) {
  for (int counter = 0; counter <20; counter++) {
    System.out.println(fibonacci(counter));
  }
  }
  public static long fibonacci(long number) {
  if ((number == 0) || (number == 1))
    return number;
  else
    return fibonacci(number - 1) + fibonacci(number - 2);
  }

案例五

       随机产生一个字符,判断:如果为大写字母则输出“大写字母”;如果为小写字母则输出“小写字母”;否则怎输出“其他字符”;


       方法一:用char的方式直接判断,因为我们学过,char类型能直接当做int类型来用,实现代码如下:


public static void main(String[] args) {
  char zm=(char)(Math.random()*('z'-'A')+'A');
  System.out.println(zm);
  if(zm>='A'&&zm<='Z'){
    System.out.println("大写字母");
  }else if(zm>='a'&&zm<='z'){
    System.out.println("小写字母");
  }else{
    System.out.println("其他字符");
  }
  }
        方法二:将字母或者字符转化为整数类型的方式进行判断,代码如下:
  /*
  *   a-z:97~122 
  *   A~Z:65~90
  */
  public static void main(String[] args) {
  int num = (int) (Math.random() * 58 + 65);
  if (num >= 65 && num <= 90) {
    System.out.println("大写字母");
    System.out.println((char) num);
  } else if(num>=97&&num<=122) {
    System.out.println("小写字母");
    System.out.println((char) num);
  }else{
    System.out.println("其他字符");
    System.out.println((char) num);
  }
  }


案例六

       用100元人民币兑换10元,5元,1元的纸币(每种都要有)共50张,计算有多少种兑换方案


       注意:每一种都要有,说明至少一张1元,一张5元,一张10元,且他们总共的张数是50张


       实现代码如下:


public static void main(String[] args) {
  int count = 0;
  for(int i=1;i<=100;i++){
    for (int j = 1; j <= 20; j++) {
    for (int k = 1; k <= 10; k++) {
      if(i+5*j+10*k==100&&i+j+k==50){
      count++;
      }
    }
    }
  }
  System.out.println("将100元兑换为1元、5元、10元的零钱的兑换方法有"+count+"种。");
  }


案例七

       设计Java程序,假设有50瓶饮料,喝完3个空瓶可以换一瓶饮料,依次类推,请问总共喝了多少瓶饮料?


       实现代码如下:


public class Practice31 {
  public static void main(String[] args) {
  int drink = 50; // 饮料总数
  int count = 0; // 兑换次数
  while (true) {
    drink -= 3; // 喝3瓶
    drink++; // 兑换1瓶
    count++; // 兑换次数+1
    if (drink < 3) {
    System.out.println("共喝了" + (50 + count) + "瓶");
    break;
    }
  }
  }
}


相关文章
|
12天前
|
Java 测试技术 应用服务中间件
常见 Java 代码缺陷及规避方式(下)
常见 Java 代码缺陷及规避方式(下)
39 0
|
14天前
|
Java
Java中ReentrantLock释放锁代码解析
Java中ReentrantLock释放锁代码解析
25 8
|
17天前
|
前端开发 小程序 Java
uniapp上传图片 前端以及java后端代码实现
uniapp上传图片 前端以及java后端代码实现
32 0
|
19天前
|
设计模式 存储 Java
23种设计模式,享元模式的概念优缺点以及JAVA代码举例
【4月更文挑战第6天】享元模式(Flyweight Pattern)是一种结构型设计模式,旨在通过共享技术有效地支持大量细粒度对象的重用。这个模式在处理大量对象时非常有用,特别是当这些对象中的许多实例实际上可以共享相同的状态时,从而可以减少内存占用,提高程序效率
35 4
|
19天前
|
设计模式 Java 中间件
23种设计模式,适配器模式的概念优缺点以及JAVA代码举例
【4月更文挑战第6天】适配器模式(Adapter Pattern)是一种结构型设计模式,它的主要目标是让原本由于接口不匹配而不能一起工作的类可以一起工作。适配器模式主要有两种形式:类适配器和对象适配器。类适配器模式通过继承来实现适配,而对象适配器模式则通过组合来实现
30 4
|
20天前
|
存储 缓存 算法
优化 Java 后台代码的关键要点
【4月更文挑战第5天】本文探讨了优化 Java 后台代码的关键点,包括选用合适的数据结构与算法、减少不必要的对象创建、利用 Java 8 新特性、并发与多线程处理、数据库和缓存优化、代码分析与性能调优、避免阻塞调用、JVM 调优以及精简第三方库。通过这些方法,开发者可以提高系统性能、降低资源消耗,提升用户体验并减少运营成本。
|
21天前
|
Java 开发工具 流计算
flink最新master代码编译出现Java Runtime Environment 问题
在尝试编译Flink源码时遇到Java运行时环境致命错误:EXCEPTION_ACCESS_VIOLATION。问题出现在JVM.dll+0x88212。使用的是Java 11.0.28和Java HotSpot(TM) 64-Bit Server VM。系统为Windows客户端,没有生成核心dump文件。错误日志保存在hs_err_pid39364.log和replay_pid39364.log。要解决这个问题,建议检查JDK版本兼容性,更新JDK或参照错误报告文件提交Bug至http://bugreport.java.com/bugreport/crash.jsp。
|
22天前
|
Java
使用Java代码打印log日志
使用Java代码打印log日志
77 1
|
6天前
|
Java 关系型数据库 MySQL
一套java+ spring boot与vue+ mysql技术开发的UWB高精度工厂人员定位全套系统源码有应用案例
UWB (ULTRA WIDE BAND, UWB) 技术是一种无线载波通讯技术,它不采用正弦载波,而是利用纳秒级的非正弦波窄脉冲传输数据,因此其所占的频谱范围很宽。一套UWB精确定位系统,最高定位精度可达10cm,具有高精度,高动态,高容量,低功耗的应用。
一套java+ spring boot与vue+ mysql技术开发的UWB高精度工厂人员定位全套系统源码有应用案例
|
12天前
|
Java
代码的魔法师:Java反射工厂模式详解
代码的魔法师:Java反射工厂模式详解
26 0