分支:
1.if() if( ) if套嵌
{ } { }else{ }
2.
switch(表达式){
case 常量表达式1: 语句序列1
[break;]
case 常量表达式2: 语句序列2
[break;]
……
case 常量表达式n: 语句序列n
[break;]
default: 语句序列n+1
[break;]
}
在switch语句中,常量表达式的值可以是整数,但绝对不可以是实数。例如,下面的代码是不合法的:
case 7.17:
常量表达式的值可以是字符,但不可以是字符串。例如,下面的代码也是不合法的:
case "wgh":
但是下面的两句代码是合法的。
case:10:
case:'H'
import java.util.*;
public class Switch
{
static Scanner sc=new Scanner(System.in);
public static void main(String[] args)
{
int weekN=0;
weekN=sc.nextInt();
switch(weekN)
{
case 0:
System.out.println("星期日");
break;
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
case 5:
System.out.println("星期五");
break;
case 6:
System.out.println("星期六");
break;
default :
System.out.println("输入的不是有效的值");
}
}
}
循环语句:
for循环语句也称为计次循环语句,一般用于循环次数已知的情况。例如,要计算1到100之间所有整数的和,就可以使用for循环语句。具体代码如下:
int sum=0;
for(int i=1;i<=100;i++){
sum+=i;
}
System.out.println("1到100之间所有整数的和是: "+sum);
格式:
for(初始化语句;循环条件;迭代语句){
语句序列
}
初始化语句:为循环变量赋初始值的语句,该语句在整个循环语句中只执行一次。
循环条件:决定是否进行循环的表达式,其结果为boolean类型,也就是其结果只能是true或false。
迭代语句:用于改变循环变量的值的语句。
在使用for语句时,一定要保证循环可以正常结束,也就是必须保证循环条件的结果存在为false的情况,否则循环体将无休止的执行下去,从而形成死循环。例如,下面的循环语句就会造成死循环,原因是i永远大于等于1。
for(int i=1;i>=1;i++){
System.out.println(i);
}
while(条件表达式){
语句序列
}
条件表达式:决定是否进行循环的表达式,其结果为boolean类型,也就是其结果只能是true或false。
语句序列:也就是循环体,在条件表达式的结果为true时,重复执行。
public class WhileList {
public static void main(String[] args) {
int sum=0;
int i=1; //由于是计算自然数, 所以1的初始值设置为1
System.out.println("累加和不大于10的所有自然数如下: ");
while(sum<10){
sum=sum+i;
System.out.println(i); //输出i的值
i++; //该语句一定不要少
}
}
}
do{ } while();
do{
语句序列
} while(条件表达式); //注意!语句结尾处的分号";"一定不能少
语句序列:也就是循环体,循环开始时首先被执行一次,然后在条件表达式的结果为true时,重复执行。
条件表达式:决定是否进行循环的表达式,其结果为boolean类型,也就是其结果只能是true或false。
一般的情况下,使用do...while语句和while语句处理同一问题时,若二者的循环体部分是一样的,那么它们的执行结果也是一样的。
循环套嵌:
public class MultiplicationTable {
public static void main(String[] args) {
for(int i=1;i<=9;i++){
for(int j=1;j<=i;j++){
System.out.print(i+"*"+j+"="+i*j+"/t");
}
System.out.print("/r/n"); //输出一个回车换行符
}
}
}
(1)while语句和do...while语句,只在while后面指定循环条件,但是需要在循环体中包括使循环趋于结束的语句,而for语句则可以在迭代语句中包含使循环趋于结束的语句。
(2)用while语句和do...while语句时,对循环变量的初始化操作应该放在while语句和do...while语句之前,而for语句则可以在初始化语句中完成。
(3)while语句和do...while语句实现的功能相同,唯一的区别就是do…while语句先执行后判断,无论表达式的值是否为true,都将执行一次循环;而while语句则是首先判断表达式的值是否为true,如果为true则执行循环语句;否则将不执行循环语句。
(4)for循环语句一般用在对于循环次数已知的情况下,而while语句和do...while语句则一般用在对于循环次数不确定的情况下。
跳转语句:
使用break语句只能退出当前循环。如果想通过break语句退出嵌套很深的循环时,可以通过带标签的break语句实现。例如,下面的代码,当执行到break loop;语句时,将退出全部的for循环。
loop:
for(int i=1;i<=9;i++){
for(int j=1;j<=i;j++){
if(i*j==16){
break loop;
}
System.out.print(i+"*"+j+"="+i*j+"/t");
}
System.out.print("/r/n"); //输出一个回车换行符
}
上面代码的执行结果如下:
1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
4*1=4 4*2=8 4*3=12
实际上break语句还有一个作用,就是应用在switch语句中,用来终止switch语句,这在介绍switch语句时,已经介绍过,这里不再赘述。
continue语句只能应用在for、while和do...while循环语句中,用于让程序直接跳过其后面的语句,进行下一次循环。例如,实现输出100以内全部能被7整除的数的代码如下:
int m=1;
for(int i=1;i<100;i++){
if(i%7!=0){ //当i的值不能被7整除时
continue;
}
System.out.print(i+"/t"); //输出i的值
if(m%7==0){
System.out.print("/r/n"); //输出一个回车换行符
}
m++;
}
在上面的代码中,当变量i不能被7整除时,将跳过下面的输出语句,直接进入下一次循环。具体执行结果如下:
7 14 21 28 35 42 49
56 63 70 77 84 91 98
continue语句和break语句一样,也可以和标签搭配使用。其作用也是用于跳出深层循环。
public class TestContinue {
public static void main(String[] args) {
loop:
for(int i=1;i<=9;i++){
for(int j=1;j<=i;j++){
if(j==2){
continue loop; //跳出双层for循环语句
}
System.out.print(i+"*"+j+"="+i*j+"/t");
}
System.out.print("/r/n"); //输出一个回车换行符
}
}
}
return语句可以从一个方法返回,并把控制权交给调用它的语句。语法格式如下:
return [表达式];
表达式:可选参数,表示要返回的值。它的数据类型必须同方法声明中的返回值类型一致,这可以通过强制类型转换实现。
return语句通常被放在被调用方法的最后,用于退出当前方法并返回一个值。当把单独的return语句放在一个方法的中间时,会产生“Unreachable code”编译错误。但是可以通过把return语句用if语句括起来的方法,将return语句放在一个方法中间,用来实现在程序未执行完方法中的全部语句时退出。