案例一
输出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; } } } }