本文一共有两个案例。
案例一:输入奖票号码,如果符合要求则给出中奖信息,输入over实现结束退出。每张奖票2元,统计买了多少张奖票,花了多少钱。奖票中奖信息如下图所示。
奖票号码 | 奖励等级 | 奖品 |
f(F) | 一等奖 | 奥迪 |
s(S) | 二等奖 | 吉利博越 |
t(T) | 三等奖 | 奇瑞QQ |
实验代码如下:
import java.util.Scanner;
public class Exam3 {
public static void main(String[] args) {
String ticket;//奖票号码
int count=0;//统计总金额的,初始为0
Scanner scan=new Scanner(System.in);//创建输入对象,默认输入流
while(true){
System.out.println("-------------------");
System.out.println("请输入奖票号码:");
ticket=scan.nextLine();//实现从键盘输入
if("over".equalsIgnoreCase(ticket)) //如果输入的是over就直接break结束循环,进入结算金额的语句
break;
count=count+1;//记录每次奖票数量,每次从键盘输入一次都会加1
if("f(F)".equalsIgnoreCase(ticket)){ //对比看输入的ticket是不是和冒号里面的内容是一样的,如果一样就输出中奖信息
System.out.println("恭喜你中了一等奖,奖品:是奥迪");
}else if("s(S)".equalsIgnoreCase(ticket)){
System.out.println("恭喜你中了二等奖,奖品:吉利博越");
}else if("t(T)".equalsIgnoreCase(ticket)){
System.out.println("恭喜你中了三等奖,奖品:奇瑞QQ");
}else{
System.out.println("很遗憾你没有中奖,继续努力!");//如果输入的不是以上的那些就会提示没有中奖
}
}
System.out.println("您买了"+count+"张彩票,花了人民币:"+(count*2)+"元");//结算统计金额,输出
}
}
实验结果:
出现的问题和解决方法:
在输入奖票的号码时,如果不是按照顺序输入f -> ( -> F -> ),而是先->( -> ) ->F,那么运行的时候输出结果就会是不中奖的,按照第二个顺序输入后括号中间的F就会是黑色的,而不是绿色的(看图),我个人认为是因为使用了equalsIgnoreCase()函数来判断从键盘输入的是不是和ticket设置内容是一样的,这个函数是按照输入的顺序来一个一个的和ticket做对比。
举个栗子,就是ticket的内容是“你们好”,然后你从键盘输入应该是先输你,再输们,再输好,这样子就会判定输入的是和ticket的一样的,如果输入的是你,再到好,后面插入们,这样子就会判定为何ticket不一样。理解了不?(个人的小见解,如有错误欢迎指出呀~,或者有更好的解释的,可以放在评论区哟~)
案列二 :产生若干不大于100的随机整数aint,进行处理:1、如果50<=aint<=60则重新产生随机整数;2、如果aint能被7整除则停止产生随机数,退出程序;3、如果aint是奇数,计算s=1+1/2+1/3+1/4+...+1/aint;4、如果aint是偶数,输出该偶数的所有因子;
实验代码如下:
import java.util.Random;
public class Exam33 {
public static void main(String[] args) {
System.out.println("-----------------------------");
int aint=0;
Random ran=new Random();//构造随机数产生器对象
while(true){ //重复处理
aint=ran.nextInt(100);//产生不大于100的随机整数
if(50<=aint&&aint<=60){//条件1:如果为50~60,重新产生
continue;
}
if(0==aint%7){//条件2:能被7整除
System.out.println("\n产生了被7整除的整数:"+aint);
break;
}
if(1==aint%2){//条件3:如果随机数是奇数,计算表达式
System.out.println("\n产生奇数"+aint);
double sum=0.0;
for(int i=1;i<aint;i++){
sum=1.0/i+sum;
}
System.out.println("1+1/2+1/3+1/4+...+1/"+aint+"="+sum);
}else{//条件4:如果随机数是偶数,输出偶数因数
System.out.println("\n产生偶数:"+aint+",因子是:");
for(int i=1;i<=aint/2;i++){
if(0==aint%i){
System.out.print(i+" ");
}
}
}
}
System.out.println("-----------------------------------");
}
}
实验结果:
实验总结:
感觉这题没啥问题可以说的,所以我就说一下实验总结吧。
通过if语句完成多种条件下执行不同语句的选择判断功能,在循环语句中,利用break能够跳出本层循环语句,continue语句能够使程序流程跳转到循环语句开始的位置。while(true)是死循环结构,在满足一定条件时使用break跳出给while语句。