黑马程序员技术交流社区
标题:
if中的问题,求详细解答
[打印本页]
作者:
青菜白汤
时间:
2013-12-21 14:32
标题:
if中的问题,求详细解答
这段程序我仔细看了很多次,逻辑还是有点乱,求详细步骤解答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);
}
}
作者:
恩恩
时间:
2013-12-21 17:03
public class PrintTest {
static boolean s1; //首先这里之申明没有赋值那么初值肯定是false
static boolean s2; //这里一样,申明没有赋值那么初值肯定是false
public static void main(String args[]){
int x = 1;
if(!s1){ // 这里肯定是可以执行,这里的条件!s1肯定是真,所以能够执行往下走
if(!s2){ // 到这里!s2也是真的,肯定也可以执行接着往下走
s1 = true; // 到了这里,就把S1变成真的了,现在可以打印一下看看
//System.out.println(s1); // 这里打印的结果肯定是真的。true
}
if(!s1){// 到这里s1已经是真的了,所以这里就不执行了
x=x+10;
}
else if(s2=true){// 直接来到这里,看看这里的问题,其实主要问题也是在这里,这里相当于是把true赋值给了s2,所以S2一定是true,但是S2只是在这里是真的,到了下面就没有用了,相当于一个临时变量
System.out.println(s2);// 打印的结果一定是true
x=x+100; //所以这里就会给x加1,所以最后打印的结果也是101
}
else if(s1|s2){// 这里的意思是把S1 和 S2 按位或,这里的S1是真的,但是S2是假的,最后的结果也是假的,所以不执行这个里面的内容。
System.out.println(s1);//
System.out.println(s1);//
x=x+1000;//
}
}
System.out.println(x); //最后得出结论x=101
}
复制代码
作者:
公子-醉香
时间:
2013-12-21 17:32
public class Main {
static boolean s1;
static boolean s2;
static String str="我在这里存在吗?";
public static void main(String[] args) {
// TODO Auto-generated method stub
int x=1;
if(!s1){
if(!s2){
s1=true;
System.out.println(str+""+"s1="+s1+" "+"s2="+s2);
}
if(!s1){
x=x+10;
// System.out.println(str+""+"s1="+s1+" "+"s2="+s2);
}
//-----------------------------------------------//
else if(s2=true){
x=x+100;
System.out.println(str+""+"s1="+s1+" "+"s2="+s2);
}
else if(s1|s2){
x=x+1000;
// System.out.println(str+""+"s1="+s1+" "+"s2="+s2);
}
}
System.out.println(x);
}
}
/*
看程序的时候始终把握知识要点,该是什么就是什么,按照定义的来,不要认为这个程序该执行什么就执行什么。
首先你的明确s1和s2的值是什么? s1和s2的值都是false,因为默认boolean类型的值是false
其次你要清楚程序中执行了哪些代码?
整个程序是一个if判断中套有四个判断,大if中的四个判断按照我给你分隔的地方,上面执行一个,下面执行一个
我给你跟踪了代码执行,你可以仔细的看看
*/
复制代码
作者:
75100313
时间:
2013-12-22 08:59
package com.mth.test;
public class TestBoolean {
static boolean s1;// false
static boolean s2;// false
public static void main(String args[]) {
int x = 1;
// 最外层大if
if (!s1) { // true 如果是真才往下执行 初始化是false 那么加个!就是ture 进入下一步
// 里面第一个小if
if (!s2) {// true 如果是真才往下执行 初始化是false 那么加个!就是ture 进入下一步
s1 = true; // 通过前两步 s1的值是true
}
// 里面第二个小if
if (!s1) { // 上面得到s1是true 这个括号里面加了个! 那么就是false 不符合条件 不执行
x = x + 10;
} else if (s2 = true) {// s2的值被复制成true (注意判断的话是==两个等号) 所以执行这一步
// 那么下一个条件 if (s1 | s2) 就不用看了 x=101
x = x + 100;
} else if (s1 | s2) {
x = x + 1000;
}
}
System.out.println(x); // 输出 101
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2