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;
    }
  }
  }
}


相关文章
|
2天前
|
Java
Java关键字 —— super 详细解释!一看就懂 有代码实例运行!
文章详细解释了Java关键字`super`的用途,包括访问父类的成员变量、调用父类的构造方法和方法,并提供了相应的代码实例。
17 5
Java关键字 —— super 详细解释!一看就懂 有代码实例运行!
|
6天前
|
Java 数据处理 开发者
Java中的Lambda表达式:简化你的代码之路
【8月更文挑战第66天】Lambda表达式在Java 8中首次引入,它为Java开发者提供了一种更简洁、更灵活的编程方式。本文将通过简单易懂的语言和实际代码示例,引导你理解Lambda表达式的基本概念、语法结构以及如何在Java项目中应用它来简化代码。无论你是Java新手还是有经验的开发者,这篇文章都将帮助你更好地掌握这一强大的工具。
34 11
|
2天前
|
存储 Java 数据安全/隐私保护
Java中的域,什么是域?计算机语言中的域是什么?(有代码实例)
文章解释了Java中域的概念,包括实例域、静态域、常量域和局部域,以及它们的特点和使用场景。
9 2
|
2天前
|
安全 算法 Java
数据库信息/密码加盐加密 —— Java代码手写+集成两种方式,手把手教学!保证能用!
本文提供了在数据库中对密码等敏感信息进行加盐加密的详细教程,包括手写MD5加密算法和使用Spring Security的BCryptPasswordEncoder进行加密,并强调了使用BCryptPasswordEncoder时需要注意的Spring Security配置问题。
20 0
数据库信息/密码加盐加密 —— Java代码手写+集成两种方式,手把手教学!保证能用!
|
2天前
|
Java
Java关键字 —— super 与 this 详细解释!一看就懂 有代码实例运行!
本文介绍了Java中this和super关键字的用法,包括在构造方法中使用this来区分参数和成员变量、使用super调用父类构造方法和方法,以及它们在同一个方法中同时使用的场景。
10 0
Java关键字 —— super 与 this 详细解释!一看就懂 有代码实例运行!
|
2天前
|
Java
Java关键字 —— static 与 final 详细解释!一看就懂 有代码实例运行!
这篇文章详细解释了Java中static和final关键字的用法,包括它们修饰类、方法、变量和代码块时的行为,并通过代码示例展示了它们的具体应用。
19 0
Java关键字 —— static 与 final 详细解释!一看就懂 有代码实例运行!
|
12天前
|
Java
java小工具util系列4:基础工具代码(Msg、PageResult、Response、常量、枚举)
java小工具util系列4:基础工具代码(Msg、PageResult、Response、常量、枚举)
33 5
|
10天前
|
Java 开发者
探索Java中的Lambda表达式:简化你的代码之旅##
【8月更文挑战第62天】 Java 8的发布为开发者带来了诸多新特性,其中最引人注目的无疑是Lambda表达式。这一特性不仅让代码变得更加简洁,还极大地提升了开发的效率。本文将通过实际示例,展示如何利用Lambda表达式来优化我们的代码结构,同时探讨其背后的工作原理和性能考量。 ##
|
2天前
|
算法 Java 测试技术
数据结构 —— Java自定义代码实现顺序表,包含测试用例以及ArrayList的使用以及相关算法题
文章详细介绍了如何用Java自定义实现一个顺序表类,包括插入、删除、获取数据元素、求数据个数等功能,并对顺序表进行了测试,最后还提及了Java中自带的顺序表实现类ArrayList。
5 0
|
2天前
|
Java Apache
Apache POI java对excel表格进行操作(读、写) 有代码!!!
文章提供了使用Apache POI库在Java中创建和读取Excel文件的详细代码示例,包括写入数据到Excel和从Excel读取数据的方法。
8 0