Java实验三:流程控制案例题

本文一共有两个案例。

案例一:输入奖票号码,如果符合要求则给出中奖信息,输入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语句。

  • 8
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值