Java代码案例48——求解鸡兔同笼问题

package xiangmu;
public class Ceshi {
    public static void main(String args[]) {
        // 求解鸡兔同笼问题
        // 给定头的总数和脚的总数,求解共有多少只鸡和多少只兔子
        int tou = 35;   // 头的总数
        int jiao = 94;  // 脚的总数
        int ji = 0;     // 鸡的总数
        int tu = 0;         // 兔的总数
        int biaozhi = 0;  // 标志变量,标记是否找到问题的解
        for(ji = 0; ji <= tou; ji = ji + 1) {
            if(ji * 2 + (tou - ji) * 4 == jiao) {
                tu = tou - ji;
                biaozhi = 1;
                break;
            }
        }
        if(biaozhi == 1) {
            System.out.println("共有"+ ji + "只鸡," + tu + "只兔子。");
        }else {
            System.out.println("此题无解!");
        }
    }
}
共有23只鸡,12只兔子。

Java代码案例47——利用字符编码进行字符串加密和解密

package xiangmu;
public class Ceshi {
    public static void main(String args[]) {
        // 利用ASCII码表对字符串进行加密和解密
        String zifuchuan = "I'm 20 years old.";
        // 密钥是正整数,假定为3,这个是加密和解密的钥匙
        // 修改密钥可以得到不同的加密后的字符串
        int miyao = 3;
        System.out.println("原始字符串为:" + zifuchuan);
        String jiamihou = jiami(zifuchuan, miyao);
        System.out.println("加密后的字符串为:" + jiamihou);
        String jiemihou = jiemi(jiamihou, miyao);
        System.out.println("解密后的字符串为:" + jiemihou);
    }
    public static String jiami(String zfc, int my) {
        // zfc 要加密的字符串
        // my 约定好的密钥
        String xinzfc = "";
        for(int i = 0; i < zfc.length(); i = i + 1) {
            xinzfc = xinzfc + (char)(zfc.charAt(i) + my);
        }
        return xinzfc;
    }
    public static String jiemi(String zfc, int my) {
        // zfc 要解密的字符串
        // my 约定好的密钥
        String xinzfc = "";
        for(int i = 0; i < zfc.length(); i = i + 1) {
            xinzfc = xinzfc + (char)(zfc.charAt(i) - my);
        }
        return xinzfc;
    }
}
原始字符串为:I'm 20 years old.
加密后的字符串为:L*p#53#|hduv#rog1
解密后的字符串为:I'm 20 years old.

Java代码案例46——计算n的阶乘

package xiangmu;
public class Ceshi {
    public static void main(String args[]) {
        // 给定正整数n,计算n的阶乘
        // n的阶乘 n! = 1 * 2 * 3 * ... * (n-1) * n
        // 5! = 1 * 2 * 3 * 4 * 5
        int n = 5;
        // 如果是计算连加,变量jieguo初始值是0
        // 如果是计算连乘,变量jieguo初始值是1
        int jieguo = 1;
        for(int m = 1; m <= n; m = m + 1) {
            jieguo = jieguo * m;
        }
        System.out.println(n + "! = " + jieguo);
    }
}
5! = 120

Java代码案例45——输出1到100之间所有能被7整除或包含7的数字

package xiangmu;
public class Ceshi {
    public static void main(String args[]) {
        // 输出1到100之间所有能被7整除或包含7的数字
        // 方法1
        // String.valueOf(i) 可以将数字 i 转成字符串;字符串转整数的方法是:int shuzi = Integer.parseInt("12345");
        // zfc.contains("7") 判断字符串zfc中是否包含子串7
        for(int i = 1; i <= 100; i = i + 1) {
            if(i % 7 == 0 || String.valueOf(i).contains("7")){
                System.out.print(i + " ");
            }
        }
        System.out.println();
        // 方法2
        // zfc.indexOf("7") 返回字符串zfc中子串7所在的下标,如果找不到,返回-1
        for(int i = 1; i <= 100; i = i + 1) {
            if(i % 7 == 0 || String.valueOf(i).indexOf("7") > -1){
                System.out.print(i + " ");
            }
        }
    }
}
7 14 17 21 27 28 35 37 42 47 49 56 57 63 67 70 71 72 73 74 75 76 77 78 79 84 87 91 97 98
7 14 17 21 27 28 35 37 42 47 49 56 57 63 67 70 71 72 73 74 75 76 77 78 79 84 87 91 97 98

Java代码案例44——三种循环计算从1连加到100的正整数和

package xiangmu;
public class Ceshi {
    public static void main(String args[]) {
        // 三种循环计算从1连加到100的正整数和
        // while 循环
        int i = 1;
        int he = 0;
        while(i <= 100) {
            he = he + i;
            i = i + 1;
        }
        System.out.println("1 + 2 + 3 + ... + 99 + 100 = " + he);
        // do...while 循环
        int j = 1;
        int he1 = 0;
        do {
            he1 = he1 + j;
            j = j + 1;
        }while(j <= 100);
        System.out.println("1 + 2 + 3 + ... + 99 + 100 = " + he1);
        // for 循环
        int he2 = 0;
        for(int k = 1; k <= 100; k = k + 1) {
            he2 = he2 + k;
        }
        System.out.println("1 + 2 + 3 + ... + 99 + 100 = " + he2);
    }
}
1 + 2 + 3 + ... + 99 + 100 = 5050
1 + 2 + 3 + ... + 99 + 100 = 5050
1 + 2 + 3 + ... + 99 + 100 = 5050

Java代码案例43——嵌套循环输出九九乘法表

package xiangmu;
public class Ceshi {
    public static void main(String args[]) {
        // 嵌套循环输出九九乘法表
        // \t 水平制表符   \n 换行符
        for(int m = 1; m <= 9; m++) {
            for(int n = 1; n <= m; n++) {
                System.out.print(n + "*" + m + "=" + m*n + "\t");
            }
            System.out.print("\n");
        }
    }
}
/images/pic172712202221167161487353.png

Java代码案例42——嵌套循环输出星号倒三角形

package xiangmu;
public class Ceshi {
    public static void main(String args[]) {
        // 嵌套循环输出星号倒三角形
        for(int m = 1; m <= 5; m++) {
            for(int i = 1; i <= (5-m)+1; i++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
}
*****
****
***
**
*

Java代码案例41——嵌套循环输出星号三角形

package xiangmu;
public class Ceshi {
    public static void main(String args[]) {
        // 嵌套循环输出星号三角形
        for(int m = 1; m <= 5; m++) {
            for(int i = 1; i <= m; i++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
}
*
**
***
****
*****

Java中do...while结构应用场景探究

本文针对如下业务流程的实现方法进行了探究。

  1. 检测用户是否已登录,未登录则退出系统

  2. 检测题库名是否有效,无效则退出系统

  3. 检测考试是否还有时间,没有时间则退出系统

  4. 答题,正常退出系统

对比了【多层嵌套分支法】、【标志变量法】和【do...while(false)循环法】,深刻体现了do...while结构在此类业务流程中的巧妙之处。

阅读更多…

Java代码案例40——标志变量法判断质数

package xiangmu;
public class Ceshi {
    public static void main(String args[]) {
        // 标志变量法判断质数
        // 质数:只能被 1 和 自己 整除的正整数
        int shuzi = 97;
        int biaozhi = 0;
        for(int i=2; i<shuzi; i++) {
            if(shuzi % i == 0) {
                biaozhi = 1;
                break;
            }
        }
        if(biaozhi == 0) {
            System.out.println(shuzi + "是一个质数!");
        }else {
            System.out.println(shuzi + "不是质数!");
        }
    }
}
97是一个质数!

Java代码案例39——随机生成0到100之间的正整数,猜数字游戏

package xiangmu;
import java.util.Random;
import java.util.Scanner;
public class Ceshi {
    public static void main(String args[]) {
        // 随机生成0到100之间的正整数,猜数字游戏
        Random r = new Random();
        int shuzi = r.nextInt(101);  // nextInt(m) 生成 [0, m-1] 范围的正整数
        System.out.println("欢迎来到猜数字游戏!目标数字已生成!");
        System.out.print("请输入一个0到100之间的整数:");
        Scanner sc = new Scanner(System.in);
        while(true) {
            int sz = sc.nextInt();
            if(sz < 0 || sz > 100) {
                System.out.print("输入非法!请继续猜数字:");
                continue;                           // continue 跳过本次循环
            }
            if(sz > shuzi) {
                System.out.print("猜高了!");
            }else if(sz < shuzi) {
                System.out.print("猜低了!");
            }else {
                System.out.println("猜对了!目标数字是:" + shuzi);
                System.out.println("程序退出...");
                break;                              // break 跳出本层循环
            }
            System.out.print("请继续猜数字:");
        }
        sc.close();
    }
}
欢迎来到猜数字游戏!目标数字已生成!
请输入一个0到100之间的整数:50
猜高了!请继续猜数字:-5
输入非法!请继续猜数字:1000
输入非法!请继续猜数字:25
猜高了!请继续猜数字:12
猜高了!请继续猜数字:6
猜高了!请继续猜数字:3
猜低了!请继续猜数字:4
猜低了!请继续猜数字:5
猜对了!目标数字是:5
程序退出...

Java代码案例38——连续输入多个正整数,找到最小值

package xiangmu;
import java.util.Scanner;
public class Ceshi {
    public static void main(String args[]) {
        // 连续输入多个正整数,找到最小值
        int shuzi = 0;
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入一个正整数(-1结束输入):");
        int zuixiaozhi = sc.nextInt();
        while(zuixiaozhi != -1) {
            System.out.print("请输入一个正整数(-1结束输入):");
            shuzi = sc.nextInt();
            if(shuzi == -1) {
                break;
            }
            if(shuzi < zuixiaozhi) {
                zuixiaozhi = shuzi;
            }
        }
        System.out.println("最小值为:" + zuixiaozhi);
        sc.close();
    }
}
请输入一个正整数(-1结束输入):10
请输入一个正整数(-1结束输入):20
请输入一个正整数(-1结束输入):30
请输入一个正整数(-1结束输入):6
请输入一个正整数(-1结束输入):3
请输入一个正整数(-1结束输入):6
请输入一个正整数(-1结束输入):3
请输入一个正整数(-1结束输入):10
请输入一个正整数(-1结束输入):-1
最小值为:3

Java代码案例37——连续输入多个正整数,找到最大值

package xiangmu;
import java.util.Scanner;
public class Ceshi {
    public static void main(String args[]) {
        // 连续输入多个正整数,找到最大值
        int shuzi = 0;
        int zuidazhi = -1;
        Scanner sc = new Scanner(System.in);
        while(true) {
            System.out.print("请输入一个正整数(-1结束输入):");
            shuzi = sc.nextInt();
            if(shuzi == -1) {
                break;
            }
            if(shuzi > zuidazhi) {
                zuidazhi = shuzi;
            }
        }
        System.out.println("最大值为:" + zuidazhi);
        sc.close();
    }
}
请输入一个正整数(-1结束输入):10
请输入一个正整数(-1结束输入):30
请输入一个正整数(-1结束输入):50
请输入一个正整数(-1结束输入):30
请输入一个正整数(-1结束输入):50
请输入一个正整数(-1结束输入):20
请输入一个正整数(-1结束输入):-1
最大值为:50

Java代码案例36——用户输入一个英文字符串,统计英文、数字、符号和空格的个数

package xiangmu;
import java.util.Scanner;
public class Ceshi {
    public static void main(String args[]) {
        // 用户输入一个英文字符串,统计英文、数字、符号和空格的个数
        System.out.print("请输入一个包含英文、数字、符号和空格的字符串:");
        Scanner sc = new Scanner(System.in);
        String zfc = sc.nextLine();     // 读取一行字符,可以包含空格
        sc.close();
        int jishu_yingwen = 0;
        int jishu_shuzi = 0;
        int jishu_fuhao = 0;
        int jishu_kongge = 0;
        for (int i = 0; i < zfc.length(); i++) {
            if ((zfc.charAt(i) >= 'A' && zfc.charAt(i) <= 'Z') || (zfc.charAt(i) >= 'a' && zfc.charAt(i) <= 'z')) {
                jishu_yingwen = jishu_yingwen + 1;
            } else if (zfc.charAt(i) >= '0' && zfc.charAt(i) <= '9') {
                jishu_shuzi = jishu_shuzi + 1;
            } else if (zfc.charAt(i) != ' ') {
                jishu_fuhao = jishu_fuhao + 1;
            } else {
                jishu_kongge = jishu_kongge + 1;
            }
        }
        System.out.println("英文共有" + jishu_yingwen + "个");
        System.out.println("数字共有" + jishu_shuzi + "个");
        System.out.println("符号共有" + jishu_fuhao + "个");
        System.out.println("空格共有" + jishu_kongge + "个");
    }
}
请输入一个包含英文、数字、符号和空格的字符串:I'm 20 years old.
英文共有10个
数字共有2个
符号共有2个
空格共有3个

Java代码案例35——字符串方式逆序输出一个正整数

package xiangmu;
public class Ceshi {
    public static void main(String args[]) {
        // 字符串方式逆序输出一个正整数
        int shuzi = 123456;
        String sz = String.valueOf(shuzi);
        for(int i = sz.length()-1; i>=0; i--) {
            System.out.print(sz.charAt(i));
        }
    }
}
654321

Java代码案例34——逆序输出一个正整数

package xiangmu;
public class Ceshi {
    public static void main(String args[]) {
        // 逆序输出一个正整数
        int shuzi = 12345;
        while(shuzi!=0) {
            int yushu = shuzi % 10;
            System.out.print(yushu);
            shuzi = shuzi / 10;
        }
    }
}
54321

Java代码案例33——嵌套循环输出星号矩形

package xiangmu;
public class Ceshi {
    public static void main(String args[]) {
        // 打印 5 行 8 列 星号矩形
        // 嵌套循环
        for(int i=0; i<5; i++) {
            for(int j=0; j<8; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
}
********
********
********
********
********