A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 青菜白汤 中级黑马   /  2013-12-21 14:32  /  1164 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

这段程序我仔细看了很多次,逻辑还是有点乱,求详细步骤解答public class Demo{
    static boolean s1;
    static boolean s2;
    public static void main(String args[]){
        int x = 1;
        if(!s1){
            if(!s2){
               s1 = true;
            }
            if(!s1){
                x=x+10;
            }
            else fi(s2=true){
            x=x+100;
            }
            else if(s1|s2){
            x=x+1000;
            }
        }
        System.out.println.(x);
    }
}

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

3 个回复

倒序浏览
  1. public class PrintTest {
  2.         static boolean s1;  //首先这里之申明没有赋值那么初值肯定是false
  3.     static boolean s2;        //这里一样,申明没有赋值那么初值肯定是false
  4.     public static void main(String args[]){
  5.         int x = 1;
  6.         if(!s1){        // 这里肯定是可以执行,这里的条件!s1肯定是真,所以能够执行往下走
  7.             if(!s2){        //   到这里!s2也是真的,肯定也可以执行接着往下走
  8.                s1 = true; //  到了这里,就把S1变成真的了,现在可以打印一下看看
  9.                //System.out.println(s1);        //  这里打印的结果肯定是真的。true
  10.             }
  11.             if(!s1){//  到这里s1已经是真的了,所以这里就不执行了
  12.                 x=x+10;
  13.                
  14.             }
  15.             
  16.             else if(s2=true){// 直接来到这里,看看这里的问题,其实主要问题也是在这里,这里相当于是把true赋值给了s2,所以S2一定是true,但是S2只是在这里是真的,到了下面就没有用了,相当于一个临时变量
  17.                    
  18.                     System.out.println(s2);// 打印的结果一定是true
  19.                     x=x+100;   //所以这里就会给x加1,所以最后打印的结果也是101
  20.             }
  21.             else if(s1|s2){//   这里的意思是把S1 和 S2 按位或,这里的S1是真的,但是S2是假的,最后的结果也是假的,所以不执行这个里面的内容。
  22.                     System.out.println(s1);//
  23.                     System.out.println(s1);//
  24.                     x=x+1000;//
  25.             }
  26.         }
  27.         System.out.println(x);  //最后得出结论x=101
  28.     }
复制代码

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
  1. public class Main {
  2.         static boolean s1;
  3.     static boolean s2;
  4.     static String str="我在这里存在吗?";
  5.         public static void main(String[] args) {
  6.                 // TODO Auto-generated method stub
  7.                 int x=1;
  8.                 if(!s1){
  9.                         if(!s2){
  10.                                 s1=true;
  11.                                 System.out.println(str+""+"s1="+s1+"   "+"s2="+s2);
  12.                         }
  13.                         if(!s1){
  14.                                 x=x+10;
  15. //                                System.out.println(str+""+"s1="+s1+"   "+"s2="+s2);
  16.                         }
  17.                        
  18.                         //-----------------------------------------------//
  19.                        
  20.                         else if(s2=true){
  21.                                 x=x+100;
  22.                                 System.out.println(str+""+"s1="+s1+"   "+"s2="+s2);
  23.                         }
  24.                         else if(s1|s2){
  25.                                 x=x+1000;
  26. //                                System.out.println(str+""+"s1="+s1+"   "+"s2="+s2);
  27.                         }
  28.                 }
  29.                 System.out.println(x);
  30.         }       
  31. }
  32. /*
  33.   看程序的时候始终把握知识要点,该是什么就是什么,按照定义的来,不要认为这个程序该执行什么就执行什么。
  34.   
  35.   首先你的明确s1和s2的值是什么?       s1和s2的值都是false,因为默认boolean类型的值是false
  36.   
  37.   其次你要清楚程序中执行了哪些代码?
  38.                   整个程序是一个if判断中套有四个判断,大if中的四个判断按照我给你分隔的地方,上面执行一个,下面执行一个
  39.                   我给你跟踪了代码执行,你可以仔细的看看
  40. */
复制代码

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
  1. package com.mth.test;

  2. public class TestBoolean {
  3.         static boolean s1;// false
  4.         static boolean s2;// false

  5.         public static void main(String args[]) {
  6.                 int x = 1;
  7.                 // 最外层大if
  8.                 if (!s1) { // true 如果是真才往下执行 初始化是false 那么加个!就是ture 进入下一步

  9.                         // 里面第一个小if

  10.                         if (!s2) {// true 如果是真才往下执行 初始化是false 那么加个!就是ture 进入下一步
  11.                                 s1 = true; // 通过前两步 s1的值是true

  12.                         }
  13.                         // 里面第二个小if

  14.                         if (!s1) { // 上面得到s1是true 这个括号里面加了个! 那么就是false 不符合条件 不执行
  15.                                 x = x + 10;
  16.                         } else if (s2 = true) {// s2的值被复制成true (注意判断的话是==两个等号) 所以执行这一步
  17.                                 // 那么下一个条件 if (s1 | s2) 就不用看了 x=101
  18.                                 x = x + 100;
  19.                         } else if (s1 | s2) {
  20.                                 x = x + 1000;
  21.                         }

  22.                 }
  23.                 System.out.println(x); // 输出 101
  24.         }
  25. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马