案例一
实现双色球的彩票功能。规则:从36个红球中随机选择不重复的6个数,从15个篮球中随机选择1个组成一注彩票。可以选择买多注。
public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("请选择买几注:"); int duoZhu=sc.nextInt(); //多注彩票号码循环 for (int k = 1; k <= duoZhu; k++) { //定义一个int数组,来存放7个彩票号码; int[] redNums=new int[7]; boolean repeat=false; //36个红球中随机出6个不同数字的循环 for (int i = 0; i <6; i++) { //存到数组中去 redNums[i]=(int)(Math.random()*35+1); if(i>0){ for (int j = 0; j < i; j++) { //新获取的随机数跟数组中已有的随机数作比较,得到repeat的bool值 if(redNums[i]==redNums[j]){ repeat=true; break; } } } //如果repeat=true;说明有重复的,则需要重新产生随机数 if(repeat==true){ redNums[i]=(int)(Math.random()*35+1); } } //数组中的第七个数从篮球的15个中随机产生 redNums[6]=(int)(Math.random()*14+1); System.out.println("您的第"+k+"注彩票号码为:"); //循环打印出七个彩票号码 for (int i = 0; i < redNums.length; i++) { System.out.print(redNums[i]+"\t"); } System.out.println(); } }
运行效果:
案例二
输出一个整数的二进制数、八进制数、十六进制数。
public static void main(String[] args) { String numS1=""; Scanner sc=new Scanner(System.in); System.out.println("请输入一个整数:"); int num=sc.nextInt(); System.out.println("这个整数的二进制数:"); for (int i = num; i > 0; i/=2) { numS1=i%2+numS1; } System.out.println(numS1); //打印完二进制后,清空numS1的内容 numS1=""; System.out.println("这个整数的八进制数:"); for (int i = num; i > 0; i/=8) { numS1=i%8+numS1; } System.out.println(numS1); //打印完二进制后,清空numS1的内容 numS1=""; System.out.println("这个整数的十六进制数:"); String s16=""; System.out.println("这个整数的八进制数:"); for (int i = num; i > 0; i/=16) { int z16=i%16; switch (z16) { case 10: s16="A"; break; case 11: s16="B"; break; case 12: s16="C"; break; case 13: s16="D"; break; case 14: s16="E"; break; case 15: s16="F"; break; default: s16=String.valueOf(z16); break; } numS1=s16+numS1; } System.out.println(numS1); }
运行效果:
案例三
随机产生一个字符,判断:如果为大写字母则输出“大写字母”;如果为小写字母则输出“小写字母”;否则怎输出“其他字符”;
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("其他字符"); } }
运行效果:
案例四
求两个整数的最大公约数和最小公倍数
解题思路:先求最大公约数,用辗转相除法求,具体用法如下:
例如,求(319,377):
∵ 319÷377=0(余319)
∴(319,377)=(377,319);
∵ 377÷319=1(余58)
∴(377,319)=(319,58);
∵ 319÷58=5(余29)
∴ (319,58)=(58,29);
∵ 58÷29=2(余0)
∴ (58,29)= 29;
∴ (319,377)=29。
下面代码中的do循环操作就是用的此方法实现的。
最小公倍数:a,b的最大公约数记为(a,b)。关于最小公倍数与最大公约数,我们有这样的定理:(a,b)x[a,b]=ab(a,b均为整数)。
运行效果:
案例五
将100元兑换为1元、5元、10元的零钱,请问有多少种兑换方法?
public static void main(String[] args) { int count=0; for (int i = 0; i <=100; i++) { for (int j = 0; j <= 100; j+=5) { for (int k = 0; k <= 100; k+=10) { if(i+j+k==100){ count++; } } } } System.out.println("将100元兑换为1元、5元、10元的零钱的兑换方法有"+count+"种。"); }
运行效果: