目录
案例一
案例二
案例三
案例四
案例五
案例一
实现双色球的彩票功能。规则:从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均为整数)。
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入两个整数:\n第一个整数:");
int num1=sc.nextInt();
System.out.println("第二个整数:");
int num2=sc.nextInt();
int num1C=num1;
int num2C=num2;
int yuShu=0;
//辗转相除法求得最大公约数
do{
yuShu=num2%num1;
num2=num1;
num1=yuShu;
}while(yuShu!=0);
System.out.println("最大公约数为:"+num2);
System.out.println("最小公倍数为:"+(num1C*num2C)/num2);
}
运行效果:
案例五
将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+"种。");
}
运行效果:
码文不易,本篇文章就介绍到这里,如果想要学习更多Java系列知识,请关注博主,博主带你零基础学习Java知识。与此同时,对于日常生活有困扰的朋友,欢迎阅读我的第四栏目:《国学周更—心性养成之路》,学习技术的同时,我们也注重了心性的养成。