目录
练习3:设计Java程序,假设有50瓶饮料,喝完3个空瓶可以换一瓶饮料,依次类推,请问总共喝了多少瓶饮料?
练习4:用100元人民币兑换10元,5元,1元的纸币(每种都要有),计算有多少种兑换方案
练习5:生成13位条形码 Ean-13码规则:第十三位数字是前十二位数字经过计算得到的校验码。 例如:690123456789
练习7:李白无事街上走,提壶去买酒。遇店加一倍,见花喝一斗,五遇花和店,喝光壶中酒,试问李白壶中原有多少斗酒?(使用for循环结构编程实现) 提示:采用逆向思维分析问题。
练习8:求100到1000之间的所有能被5和6整除的整数,每行显示5个
练习9:随机产生一个字符,判断:如果为大写字母则输出“大写字母”;如果为小写字母则输出“小写字母”;否则则输出“其他字符”; * a-z:97~122 * A~Z:65~90
练习10:实现双色球的彩票功能。规则:从33个红球中随机选择不重复的6个数,从16个蓝球中随机选择1个组成一注彩票。可以选择买多注。
练习1:根据输入数字显示对应的英文星期名称缩写
要求:用键盘输入一位整数,当输入1~7时,显示对应的英文星期名称的缩写。1表示MON,2表示TUE,3表示WED,4表示THU,5表示FRI,6表示SAT,7表示SUN; 输入其他数字时提示用户重新输入,输入数字0时程序结束。
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String day = "";
System.out.print("请输入数字1-7(输入0结束):");
int num = sc.nextInt();
while(num != 0){
if(num >= 1 && num <= 7){ //数字合法
switch(num){
case 1:
day = "MON";
break;
case 2:
day = "TUE";
break;
case 3:
day = "WED";
break;
case 4:
day = "THU";
break;
case 5:
day = "FRI";
break;
case 6:
day = "SAT";
break;
case 7:
day = "SUN";
break;
}
System.out.println("今天是 " + day);
System.out.print("请输入数字1-7(输入0结束):");
num = sc.nextInt();
}else{ //数字非法
System.out.print("输入的数字非法,请重新输入:");
num = sc.nextInt();
}
}
System.out.println("程序结束!");
sc.close();
}
练习2:输出一批整数中的最大值和最小值
要求:输入一批整数,输出其中的最大值和最小值,输入数字0时结束循环。
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入一个整数(输入0结束):");
int num = sc.nextInt();
int max = num; // 记录最大值
int min = num; // 记录最小值
while (num != 0) {
if (num > max) {
max = num;
} else if (num < min) {
min = num;
}
System.out.print("请输入一个整数(输入0结束):");
num = sc.nextInt();
}
System.out.println("最大值是:" + max + " 最小值是:" + min);sc.close();
}
练习3:设计Java程序,假设有50瓶饮料,喝完3个空瓶可以换一瓶饮料,依次类推,请问总共喝了多少瓶饮料?
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;
}
}}
练习4:用100元人民币兑换10元,5元,1元的纸币(每种都要有),计算有多少种兑换方案
public static void main(String[] args) {
int yiYuan = 1;
int wuYuan = 5;
int shiYuan = 10;
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 * yiYuan + j * wuYuan + k * shiYuan == 100) {
count++;
System.out.println(i + "张1元," + j + "张5元," + k + "张10元");
}
}
}
}System.out.println("一共有" + count + "种兑换方法");
}
练习5:生成13位条形码 Ean-13码规则:第十三位数字是前十二位数字经过计算得到的校验码。 例如:690123456789
计算其校验码的过程为:
@前十二位的奇数位和6+0+2+4+6+8=26
@前十二位的偶数位和9+1+3+5+7+9=34
@将奇数和与偶数和的三倍相加26+34*3=128
@取结果的个位数:128的个位数为8
@用10减去这个个位数10-8=2 所以校验码为2
(注:如果取结果的个位数为0,那么校验码不是为10(10-0=10),而是0)
实现方法ean13()计算验证码,输入12位条码,返回带验证码的条码。
例:输入:692223361219输出:6922233612192
public static void main(String[] args) {
StringBuffer code;
int check;
System.out.print("请输入Ean-13条形码的前十二位:");
Scanner sc = new Scanner(System.in);
code =new StringBuffer(sc.nextLine());
check = ean13(code);
//在条码后面追加验证码
code.append(check);
System.out.println("正确的条形码是:"+code);
sc.close();
}
public static int ean13(StringBuffer code){
int c1=0;
int c2=0;
int sum=0;
int check;
for(int i=0;i<12;i+=2){
//奇数位数字求和
c1+=(code.charAt(i)-'0');//数字字符-数字字符=整数
//偶数位数字求和
c2+=(code.charAt(i+1)-'0');
}
sum=c1+c2*3;
check=(10-sum%10)%10;
return check;
}
练习6:开发一个标题为“FlipFlop”的游戏应用程序。
它从1计数到100,遇到3的倍数就替换为单词“Flip”,5的倍数就替换为单词“Flop”, 既为3的倍数又为5的倍数则替换为单词“FlipFlop”。
public static void main(String[] args) {
for (int i = 1; i <= 100; i++) {
if (i % 3 == 0 & i % 5 == 0) {
System.out.println("FlipFlop");
} else if (i % 3 == 0) {
System.out.println("Flip");
} else if (i % 5 == 0) {
System.out.println("Flop");
} else {
System.out.println(i);
}
}}
练习7:李白无事街上走,提壶去买酒。遇店加一倍,见花喝一斗,五遇花和店,喝光壶中酒,试问李白壶中原有多少斗酒?(使用for循环结构编程实现) 提示:采用逆向思维分析问题。
public static void main(String[] args) {
//壶里的酒
double alcohol = 0;
for(int i =0;i<5;i++){
alcohol+=1;
alcohol/=2;
}System.out.println("李白壶中原有"+alcohol+"斗酒");
}
练习8:求100到1000之间的所有能被5和6整除的整数,每行显示5个
public static void main(String[] args) {
// 定义一个变量用来统计100到1000之间能被5和6整除的整数的个数
int count = 0;
for (int i = 100; i <= 1000; i++) {
// 判断i能不能被5和6整除
if (i % 5 == 0 && i % 6 == 0) {
// 如果i能被5和6整除,就输出这个数,不换行
System.out.print(i + " ");
// 每输出一个能被5和6整除的数,count+1
count++;
// 如果count值能被5整除,说明这一行已经输出了5个能被5和6整数的数,要换行
if (count % 5 == 0) {
System.out.println();
}
}}
}
练习9:随机产生一个字符,判断:如果为大写字母则输出“大写字母”;如果为小写字母则输出“小写字母”;否则则输出“其他字符”;
* 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);
}
}
练习10:实现双色球的彩票功能。规则:从33个红球中随机选择不重复的6个数,从16个蓝球中随机选择1个组成一注彩票。可以选择买多注。
public static void main(String[] args) {
//创建Scanner类对象,用来获取从键盘输入的数据
Scanner sc = new Scanner(System.in);
System.out.println("输入你要购买的彩票注数:");
int num = sc.nextInt();for (int i = 1; i <= num; i++) {
//随机获取一个[num1,num2)之间的int类型的数(num2>num1):(int)(Math.random()*(num2-num1)+num1);
// 输出蓝球,蓝球只需要一个[1,17)
int blueBall = (int) (Math.random() * 16 + 1);
// 输出红球,红球需要6个[1,34)
int redBall1 = (int) (Math.random() * 33 + 1);
int redBall2 = 0;
int redBall3 = 0;
int redBall4 = 0;
int redBall5 = 0;
int redBall6 = 0;
while (true) {
int redBall = (int) (Math.random() * 33) + 1;
if (redBall6 != 0) {// redBall6不等于0说明redBall6已经获得值了
break;// redBall6获得值了就退出循环
}
if (redBall != redBall1 && redBall2 == 0) {
redBall2 = redBall;
} else if (redBall != redBall1 && redBall != redBall2
&& redBall3 == 0) {
redBall3 = redBall;
} else if (redBall != redBall1 && redBall != redBall2
&& redBall != redBall3 && redBall4 == 0) {
redBall4 = redBall;
} else if (redBall != redBall1 && redBall != redBall2
&& redBall != redBall3 && redBall != redBall4
&& redBall5 == 0) {
redBall5 = redBall;
} else if (redBall != redBall1 && redBall != redBall2
&& redBall != redBall3 && redBall != redBall4
&& redBall != redBall5 && redBall6 == 0) {
redBall6 = redBall;
}
}System.out.println(redBall1 + " " + redBall2 + " " + redBall3 + " "
+ redBall4 + " " + redBall5 + " " + redBall6 + "---"
+ blueBall);
}sc.close();
}