java 控制流程 &枚举类型 enum 的用法 & 带标签的break语句 &continue语句
来源:互联网 发布:淘宝代购百丽是正品吗 编辑:程序博客网 时间:2024/04/30 16:14
java 没有goto语句,但是可以用break+标签来跳到目的地
java有一种变形的for循环
java块:块确定了变量的作用域,不能在嵌套的两个块中声明同名的变量。
例如:
public static void main(String[] args){ int n; { int n: //不正确 }}
在C++中,可以在嵌套的块中冲定义一个变量,在内层定义的变量会覆盖外层的变量,但是可能会导致程序错误,java中不允许这样做。
条件语句
while循环语句首先检测循环条件,因此,while中的代码有可能不执行,如果希望代码中的程序至少执行一次,应使用do{ }while()语句。
注意:在循环中,检测两个浮点数是否相等要格外小心,下面的for循环:
for(double i=0;i!=1;i=i+0.1) System.out.println(i);run:run:0.00.10.20.300000000000000040.40.50.60.70.79999999999999990.89999999999999990.99999999999999991.09999999999999991.21.31.40000000000000011.50000000000000021.60000000000000031.70000000000000041.80000000000000051.9000000000000006……
可能永远也无法结束
当在for语句的第1部分中声明了一个变量以后,这个变量的作用于就是for循环的整个循环体。
特别指出:java中,如果在for语句内部定义了一个变量,这个变量就不能再循环体制外使用,因此,如果希望在for循环体之外使用这个变量,就必须确保这个变量在循环语句的前面而且在外部声明!
for(int i=0;i<5;++i) System.out.println(i); if(i>1) System.out.println(i); //编译错误,找不到i变量,应该在for外面声明
正确的方式:
int i; for(i=0;i<5;++i) System.out.println(i); if(i>2) System.out.println("i= "+i);run:01234i= 5
多重选择 switch语句
Scanner in=new Scanner(System.in); int number=in.nextInt(); switch(number) { case 1: System.out.println(number); break; case 2: System.out.println(number); break; case 3: System.out.println(number); break; default: System.out.println(number); break;
switch语句将从预选相知相匹配的case标签处开始执行直到遇到break; 或者switch语句的结束为止。如果没有相匹配的case标签,而又default语句,就执行这个句子。
警告:使用switch可能会触发多个case分支。如果在case分支语句的末尾没有break语句,那么就会接着执行下一个case分支语句。这种情况很危险,常常会引发错误,为此,我们在程序中从不使用switch语句。
如果你比我们更喜欢switch语句,编译代码时可以考虑加上-Xlint:fallthrough 选项,这样一来,如果某个分支最后缺少一个break语句,编译器就会给出一个警告信息
如果你确实正是想使用这种直通式(fallthrough)行为,可以为其外围方法加一个标注:@supressWarnnings(“fallthrough”).这样就不会对这个方法生成警告了
@标注是为编译器或处理java源文件或者类文件的工具提供的一种机制。
switch中的case可以是:
1,类型为char、byte、short、或者int的常量表达式
2,枚举常量:
package 第3章;// enum Size {A,B,C,D}; enum放在这里也可以public class 第3章a{ public static void main(String[] args) { Size number=Size.A; // 注意 switch(number) { case A: System.out.println(number); break; case B: System.out.println(number); break; default: System.out.println("hello"); break; } }}enum Size {A,B,C,D}; // 枚举类型的地位和class是并列的,不能放在class内部,可以放于class后,也可以放于package后,class前
package 第3章;public class 第3章a{ public static void main(String[] args) { size name=size.boy; size name2=null; System.out.println(name); System.out.println(name2); }}enum size {hello,good,boy};
3,case标签还可以是字符串字面量
package 第3章;
public class 第3章a
{
public static void main(String[] args)
{
String number=”hello”;
switch(number)
{
case “good”:
System.out.println(“a”);
break;
case “hello”:
System.out.println(“b”);
}
}
}
java.lang.String;
toLowerCase():将字符串转换为小写,返回this
toUpperCase():将字符串转换为大写,返回this
package 第3章;import java.util.*;public class 第3章a{ public static void main(String[] args) { Scanner in=new Scanner(System.in); String str=in.nextLine(); switch(str.toLowerCase()) { case "hello": System.out.println("a"); break; case "good": System.out.println("b"); break; } }}
不带标签的break语句,可以用于跳出switch,也可以用于退出循环语句(只退出当前循环语句)
java还提供了一种带标签的break语句,用于跳出多重嵌套的循环语句
标签必须放在希望跳出的最外层循环之前,并且紧跟一个冒号
注意:不是标签在哪就跳到那,必须放在循环体的前面,而不能放在循环体的后面。
跳到循环体块的尾部,而不是调到haha:处!
a
package 第3章;import java.util.*;public class 第3章a{ public static void main(String[] args) { Scanner in=new Scanner(System.in); int number=in.nextInt(); haha: // System.out.println("what?"); 这里不可以有语句 while(number>0) { System.out.println(number--); if(number<3) break haha; } if(number==2) System.out.println("well"); else System.out.println("what?"); System.out.println("hello"+number); }}//对于任何使用break语句的代码,都需要检测循环是正常结束,还是由break退出。
package 第3章;import java.util.*;public class 第3章a{ public static void main(String[] args) { Scanner in=new Scanner(System.in); int number =in.nextLine(); // System.out.println("what?"); while(number>0) { System.out.println(number--); if(number<3) break haha; } if(number==2) System.out.println("well"); else System.out.println("what?"); System.out.println("hello"+number); }}
break
使用场景有两个,第一,switch中,第二,循环语句中。
switch场景就不多说了,现在说说循环语句的场景。
在循环语句中,表示跳出循环语句继续向下执行。
for(int a=0;a<6;a++) { if(a>3) { break; } System.out.println("a="+a); }
上面的代码表示当a循环到a=4的时候跳出循环。

还有一种场景是双循环中break跳出哪一个循环的问题。
for(int i=1;i<=4;i++) { for(int j=1;j<=4;j++) { System.out.println("i="+i+",j="+j); break; } }
在上面的双循环中,break跳出的循环是内层循环,而外层循环继续。 运行结果是:  这时候有个问题,如果我想跳出外层循环怎么办呢? 那就给循环起个名字。
w:for(int i=1;i<=4;i++){ n:for(int j=1;j<=4;j++){ System.out.println("i="+i+",j="+j); break w; } }
这时候,跳出的循环就是名字为w的外循环了,且不会在执行一遍w。
continue
continue的使用场景是在循环中,想要跳出当次循环,继续下次循环。
w:for(int i=1;i<=4;i++){ n:for(int j=1;j<=4;j++){ System.out.println("i="+i+",j="+j); continue w; } }

重点:1.break和continue语句的作用范围就是当前的循环。
continue
与break语句一样,,他将中断正常的控制流程。continue将控制转移到最内层循环的首部。
package 第3章;import java.util.*;public class 第3章a{ public static void main(String[] args) { Scanner in=new Scanner(System.in); double sum=0; double goal=100; while(sum<goal) { System.out.println("please input a sum"); double n=in.nextDouble(); if(n<0) { System.out.println("what?"); continue; } sum+=n; } }}
如果将continue语句用于for循环中,就可以跳到for循环的更新部分
带标签的continue将跳到与标签匹配的循环首部
- java 控制流程 &枚举类型 enum 的用法 & 带标签的break语句 &continue语句
- 带标签的break和continue语句
- 带标签的break和continue语句(Java、C++)
- swift之控制转移语句,continue,break,fallthrough,return,带标签的语句
- JavaScript中的带标签的break和continue语句
- 其他的流程控制语句,break和continue
- java、C++-带标签的break 和 continue语句
- java中特殊的流程控制语句(break,continue,return)
- java学习之路 之 基本语法-特殊的流程控制语句(break、continue、return)
- 【Java学习笔记】04.流程控制语句与break,continue的使用
- java 中流程控制语句switch以及break,continue,return的比较
- 标签的 break 和 continue 语句
- 标签的 break 和 continue 语句
- break return continue语句的用法
- 中断控制流程语句:break、continue
- 带标签的 break 和 continue (Java)
- 带标签的 break 和 continue (Java)
- Java中带标签的break、continue
- jquery UI chrome 不兼容的问题
- arguments.callee 调用自身
- 【JZOJ5260】【GDOI2018模拟8.12】区间第k小(分块)
- noip2010 普及组 排队接水
- 【JZOJ5262】【GDOI2018模拟8.12】树(DP,性质题)
- java 控制流程 &枚举类型 enum 的用法 & 带标签的break语句 &continue语句
- vue总结
- 【jsoup】解析一个HTML字符串
- 翻译Husky文档-PyHusky的架构汉化版
- Kotlin语言系统化学习K00-前言
- C#基础-001控制台初识与基本注释
- POJ2762 Going from u to v or from v to u?
- idapython-init
- 【jsoup】解析一个body片断