0
点赞
收藏
分享

微信扫一扫

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条件的数。

      

        方法一:解题思路,定义三个整数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;
}
}
}
}

    码文不易,本篇文章就介绍到这里,如果想要学习更多Java系列知识,请关注博主,博主带你零基础学习Java知识。与此同时,对于日常生活有困扰的朋友,欢迎阅读我的第四栏目:《国学周更—心性养成之路》,学习技术的同时,我们也注重了心性的养成。

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

举报

相关推荐

0 条评论