java流程控制01
java.util.Scanner是Java5的新特征,可以通过 Scanner 类来获取用户的输入。
// 创建Scanner对象的基础语法
Scanner scanner = new Scanner(System.in);
System.out.println("使用next方式输入:");
// 使用next方式接收
String str = scanner.next();
// 输入:Hello World
System.out.println("输入的内内容是:"+str); // 返回:Hello
// 使用nextLine方式接收
System.out.println("请输入:"+scanner.nextLine()); // 返回:Hello World
// 凡是属于IO流的类如果不关闭会一直占用资源,养成良好的习惯
scanner.close();
注:
next():
一定要读到有效字符后才能结束输入。
输入有效字符串后会将前后空格内容视作分隔符或者结束符不输出。
next() 不能得到待有空格的字符串。
nextLine():
以回车为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。
可以获得空白
Scanner a = new Scanner(System.in);
System.out.println("请输入整数:");
// 判断输入的是否是整数
if(a.hasNextInt()){
int i = a.nextInt();
System.out.println("我输入的整数是:"+i);
}else{
System.out.println("你输的很明显不是整数。");
}
顺序结构
-
Java的基本结构就是顺序结构,除非特别指明,否则就按顺序一句一句执行。
-
顺序结构是最简单的算法结构。
-
语句和语句之间,框与框之间是按从上到下的顺序进行的,它是若干个一次执行的处理步骤组成的,它是任何一个算法都离不开的一种基本算法结构。
条件语句
- if 语句
if(布尔表达式)
{
//如果布尔表达式为true将执行的语句
}
如果布尔表达式的值为 true,则执行 if 语句中的代码块,否则执行 if 语句块后面的代码。
- if…else 语句
if(布尔表达式){
//如果布尔表达式的值为true
}else{
//如果布尔表达式的值为false
}
if 语句后面可以跟 else 语句,当 if 语句的布尔表达式值为 false 时,else 语句块才会被执行。
- if…else if…else 语句
if(布尔表达式 1){
//如果布尔表达式 1的值为true执行代码
}else if(布尔表达式 2){
//如果布尔表达式 2的值为true执行代码
}else if(布尔表达式 3){
//如果布尔表达式 3的值为true执行代码
}else {
//如果以上布尔表达式都不为true执行代码
}
if 语句后面可以跟 else if…else 语句,这种语句可以检测到多种可能的情况。
使用 if,else if,else 语句的时候,需要注意下面几点:
- `if 语句至多有 1 个 else 语句,else 语句在所有的 else if 语句之后。`
- `if 语句可以有若干个 else if 语句,它们必须在 else 语句之前。`
- `一旦其中一个 else if 语句检测为 true,其他的 else if 以及 else 语句都将跳过执行.`
- 嵌套的 if…else 语句
if(布尔表达式 1){
////如果布尔表达式 1的值为true执行代码
if(布尔表达式 2){
////如果布尔表达式 2的值为true执行代码
}
}
- switch 多分支语句
switch(表达式){
case 常量值1 :
//语句1
break; //可选
case 常量值2 :
//语句
break; //可选
//你可以有任意数量的case语句
default : //可选
//语句
}
switch 语句中表达式的值必须是整形、字符型或字符串类型。JDK7 后的新特性 switch 语句首先计算表达式的值,如果表达式的值和某个case后面的常量值相等,则执行该case语句后的若干个语句直到遇到break语句为止。switch后面的表达式是常量,case后面的表达式赋给常量的变量值 case后面的表达式可以是整数,但不能是实数。
循环语句
- while 循环
while( 布尔表达式 ) {
//循环内容
}
只要布尔表达式为 true,循环就会一直执行下去。
- do…while 循环
do {
//代码语句
}while(布尔表达式);
do…while和while之间的区别是 while 语句为先判断条件是否成立在执行循环体,而 do…while 循环语句则先执行一次循环后,在判断条件是否成立。
- for 循环
for(表达式1; 表达式2; 表达式3)
{
//代码句子
}
// 表达式1:初始表达式,负责完成变量的初始化。
// 表达式2:循环条件表达式,值为boolean行的表达式,指定循环条件。
// 表达式3:循环后操作表达式,负责修整变量,改变循环条件。
在执行for循环时,首先执行表达式1,完成某一变量的初始化工作;下一步判断表达式2的值,若表达式2的值为true,则进入循环体;在执行完循环体后紧接着计算表达式3,这部分通常是增加或减少循环控制变量的一个表达式。
- foreach 语句
for(声明语句 : 表达式)
{
//代码句子
}
声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。 表达式:表达式是要访问的数组名,或者是返回值为数组的方法。
foreach 是Java5引入的一种主要用于数组的增强型 for 循环。
循环控制
循环控制包含包含两方面的内容,一方面是控制循环变量的变化方式,另一方面是循环的跳转。 break是中断循环,continue是执行下一次循环。
在默认情况下:break语句终止的是离它最近的一层循环语句。
标签控制循环: 跳出指定循环(内外层都可以)
标签名 : 循环体{
break 标签名;
}
- continue 语句
continue 语句是针对 break 语句的补充。continue 不是立即跳出循环体,而是跳过本次循环结束前的语句,回到循环的条件测试部分,重新开始执行循环。
for (int i=1; i<20; i++){
if(i%2==0){ // 如果 i 是偶数
continue; // 跳到下一个循环
}
}
continue 也支持标签语句。