• 初试if,else。


         今天星期日,之前星期5学习了java的,if,else,终于脱离了三目运算的噩梦了,今天在复习功课的时候,突然之间的走神发现了一段文字。

    “--  东方不败之死!!!~话说东方不败得到了葵花宝典,,心中万分高兴,,打开第一页,赫然写着:“欲练此功,必先自宫”, 东方不败想了许久,,终于为了成为天下第一,,忍痛割“爱”了,,但是他被那巨痛疼得晕了过去,,当他醒来,欣然翻开第二页,他看到后气得卡血,,第二页写着:“就算自宫,未必成功”,他还是忍住疼痛与心痛,,骤然翻开第三页,,他一看,马上就气得吐血而亡,,原来,第三页上写着:“不必自宫,也能成功”。”

        一看这文字,我就发现其中的如果……就……的关系,和我们才学的if,else差不多,再仔细一看,其中有递进关系,第一,第二,第三。这让我突然有了冲动想把他做出来。

    代码如下:

    1,public class L葵花宝典{
    2,public static void main(String[]args){
    3, System.out.println("你发现一本武林秘籍<<葵花宝典>>,是否打开?");
    4, System.out.println("yes-打1     "+"no-打0");
    5,int a=Integer.parseInt(args[0]);
     6,if(a==1){
     7, System.out.println("欲练此功,必先自宫");
     8,  System.out.println("是否继续打开?");
     9, System.out.println("yes-打1    "+"no-打0");
     10, int b=Integer.parseInt(args[1]);
      11, if(b==1){
      12,  System.out.println("就算自宫,未必成功");
      13,  System.out.println("是否继续打开?");
      14, System.out.println("yes-打1    "+"no-打0");
      15,  int c=Integer.parseInt(args[2]);
      16,  if(c==1){
       17,  System.out.println("不必自宫,也能成功");
         
       18,  }else{
       19,  System.out.println("你与绝世武功无缘");
        20, }
       21, }else{
       22, System.out.println("你与绝世武功无缘");
        23,}
       24, 
       25,
     26, }else{
     27,  System.out.println("你与绝世武功无缘");
      28,}

     }

       这段代码我原本的打算是,一段背景“你发现一本武林秘籍<<葵花宝典>>,是否打开?");”然后我人为输入“打开”,然后文字说明,然后继续问“是否打开”再次输入“打开”,再次文字说明再问“是否打开”,最后输入,最后文字说明。

       再输入的过程中,第一道难关是6-17行,第二次是否打开这一项,

    疑问:1,我输入的第二次打开,应该是在我第一次打开成功以后,再提出疑问,是否会,出现无论我直接第一次输入打开或者不打开,都会出现第二次的文字说明,是否我输入第一次不打开,结果依然会出现第二次的文字显示。带着疑问,我慢慢理清3个if之间的关系,关键是在花括号,对比前2个,我在if(a==1)这个花括号里面键入的if(b==),逻辑上应该是,如果a成立以后,出现……如果b也成立 还会出现……,所以不会出现之上的疑虑,但是如果我的花括号有问题,比如if(b==1)在花括号外面,就会出现2个并列的IF语句,就会出现这种情况,如果A,成立出现……,如果b成立,出现……,则,a,b无关,同理,b,c一样,

    疑问2,我的3次打开是有先后顺序的,是否因为输入顺序的不同,导致,第二次先打开,第一次在后面打开,或者第三次先打开,然后第二次,最后第一次。这需要区别彼此的先后顺序,以及范围,首先逻辑关系是,必须有了第一次,才有第二次,才有第三次,没有第一次就没有以后2次,所以,第一次应该是最大的花括号,就应该是第一个,其次是第二次,再次是第三次,所以得到,键入顺序应该依次是a,b,c。

    随后我输入后半部分,18-27行,这里出现了一点小问题,是if,else的逻辑关系,因为else的键入位置不对,会报错,会提示else找不到if,这时,我们需要做的事情是从里面向外面找花括号,为区分三次不打开的不同把他们看成,else1,2,3,因为在逻辑关系上,第一次打开出现……否则会出现(else1),然后才有第二次打开出现……,否则出现(else2),最后才会第三次打开出现……,否则出现(else3),所以,从内到外而言,紧接着if(c==1)的应该就是else3,因为c的花括号是最小的,else3的键入位置应该在,if(b==0)和if(a==0)之内,所以由内而外的键入顺序应该是,c,b,a。

    通过以上难点以后,该程序就能轻松打出来了。

    疑问:虽然程序已经打出来了,但是和预期的还是有一点点的区别,因为我最先打算的是,先第一次打开,然后在考虑 是否打开第二次,打开第二次以后,考虑是否打开第三次,所以之中还有互动的程序,很可惜还没有学到哪里,预想中应该还有个类似可以返回取值的过程,等学到以后再重新把这L葵花宝典重新打1次。

  • 相关阅读:
    php解析xml文件的方法
    while倒数阶乘的和
    菱形代码
    0929课堂随记
    0929作业
    0928练习作业
    HelloJava
    Java例题
    Hello World(本博客启程篇)
    vue 如何实现在函数中触发路由跳转
  • 原文地址:https://www.cnblogs.com/gongshengquan/p/3693093.html
Copyright © 2020-2023  润新知