class TestString14
{
public static void main(String[] args)
{
String str = "[email protected]";
System.out.print(validate(str));
}
public static boolean validate(String str) {
boolean flag = true; if (str.indexOf("@") == -1 || str.indexOf(".") == -1) {
flag = false;
} if (flag) {
if (str.indexOf("@") > str.indexOf(".")) {
flag = false;
}
} return flag;
}
}
就是第二个if语句,if (flag) {...}这一句,这里的flag是怎么看的,是上面的boolean flag;还是第一个if语句里的flag啊
{
public static void main(String[] args)
{
String str = "[email protected]";
System.out.print(validate(str));
}
public static boolean validate(String str) {
boolean flag = true; if (str.indexOf("@") == -1 || str.indexOf(".") == -1) {
flag = false;
} if (flag) {
if (str.indexOf("@") > str.indexOf(".")) {
flag = false;
}
} return flag;
}
}
就是第二个if语句,if (flag) {...}这一句,这里的flag是怎么看的,是上面的boolean flag;还是第一个if语句里的flag啊
如果str.indexOf("@") == -1 || str.indexOf(".") == -1条件满足,flag设置为false值
如果不满足,那么flag就是初始值true
有什么问题么?
boolean flag = true;你已经定义了变量,第一个if语句只是改变flag的判断。
如果str.indexOf("@") == -1 || str.indexOf(".") == -1条件满足,flag设置为false值
那么下下面if语句里面又有flag = false;不是重复了吗
第一个if
if(判断语句) {
flag = false;
}第二个if
if(flag) {
if(判断) {
flag = flase;
}
} return flag;flag的初值为true,第一个if判断后,若条件成立,则给flag赋值为false,此时,第二个if判断flag为flase,判断不成立,程序直接结束。
第一个if若不成立,则flag为true(初始值),则第二个if判断成立,运行里面的代码。
System.out.println(33);
}如果flag=true;则控制台打印33;否则不打印 if(flag)和if(true)是等同的
若flag没有被修改过,那么做第二个if的判断,如果满足,则flag为false
最后return flag的值
public static void main(String[] args) {
//定义两个int型变量,并赋值为10 和 5
int a = 10;
int b = 5;
if(b == 5) {
a = 100; //(1) }
if(a == 100) {
System.out.println("进来了"); //(2)
}
System.out.println(a);
}
}上面代码,因为刚开始b等于5,所以语句(1)会被执行。原来等于10的a变量会被重新赋值。a会变成100因为a变为100了。所以下面的if语句条件满足,就会执行语句(2)那按照楼主的说法。我还要去问别人第个if语句里的a和上面的int a是怎么看的。这个a是指第一个if语句里的a还是int a = 10里的a。这样的问题问出来就有点怪了。程序从头到尾就只有两个整形变量,一个叫a一个叫b。同样的在布尔型中boolean型只有两种值,要么是true(即为真) 要么就是就 false (即为假)。现在改下上面代码,把整型的变量a 换成布尔型,如下:public class Test2 {
public static void main(String[] args) {
//定义两个变量,一个为布尔类型(boolean)的变量a。和整型的变量b
boolean a = true;
int b = 5;
if(b == 5) {
a = false; //(1) }
if(a) {
System.out.println("进来了"); //(2)
}
System.out.println(a);
}
}上面代码中。因为b等5.所以第一个if语句什么执行。即(1)处会被执行。所以本来为true的变量a,被赋值为false;
因为a变为 false了,那第二个if语句就不会被执行了。所以这段代码的运行结果只会输出false;
当然是boolean flag=true;这个变量。只是如果第一个if的条件符合,flag又重新赋值为false;lz可明白
可以把if(flag){..}改为if(flag = true) {..}吗?
一个等号表示赋值,俩个等号表示判断;