分支:
单分支 if
if(){
}else if(){
}else {
}
多分支 switch
switch( 表达式 ){
case 常量1:语句1;
break;
case 常量2:语句2;
break;
...
[ default: 语句n ;]
}
细节: 1、case子句中的值必须是常量。 2、不加break则会继续往下执行。 3、case后的常量类型需跟表达式数据类型一致。 4、没有匹配的case时,执行default 5、switch(表达式) 中表达式的返回值必须是:(byte,short,int,char,enum[枚举],String) 中的其中一个
switch和if如何选择?
1、判断的具体数值不多,而且符合那6种类型,建议使用switch。 2、对区间判断,对结果为boolean类型判断,使用if,if使用范围更广。
for
for(循环变量初始化; 循环条件; 循环变量迭代){
循环操作(可以多条语句);
}
案例: 输入年月日,输出为该年的第几天。
import java.util.Scanner;
public class Hello{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int year = in.nextInt();
int month = in.nextInt();
int day = in.nextInt();
int num = 0;
for(int i = 1; i < month; i++){
if ( i == 2 ){
if (( year % 4 == 0 && year % 100 != 0 ) || year % 400 == 0)
num += 29;
else num += 28;
}
else {
if(i != 4 || i != 6 || i != 9 || i != 11)
num = num + 31;
else num = num + 30;
}
}
num += day;
System.out.println(year+"年"+month+"月"+day+"日是该年第"+num+"天");
}
}
while 循环
先判断再执行
while(循环条件){
循环体(语句);
循环变量迭代;
}
int i = 1;
while( i <= 10 ){
System.out.println("Hello"+i++);
}
do…while 循环
do{
循环体(语句);
循环变量迭代;
}while(循环条件);
注意: 1、先执行再判断,至少执行一次 2、do while是关键字 3、最后有个分号
案例
案例1:九九乘法表
for(int i = 1; i <= 9; i++){
for(int j = 1; j <= i; j++){
System.out.print(j + " * " + i + " = " + (i * j)+"\t");
}
System.out.println();
}
打印结果:
案例2 金字塔、菱形
System.out.println("输入实心金字塔的行数:");
Scanner in = new Scanner(System.in);
int row = in.nextInt();
for (int i = 1; i <= row; i++){
for(int j = row-i; j > 0; j--){
System.out.print(" ");
}
for (int j = i*2-1; j > 0; j--){
System.out.print("*");
}
System.out.println();
}
System.out.println("输入空心金字塔的行数:");
int row2 = in.nextInt();
for (int i = 1; i < row; i++){
for(int j = row-i; j > 0; j--){
System.out.print(" ");
}
System.out.println("输入空心金字塔的行数:");
int row2 = in.nextInt();
for (int i = 1; i <= row; i++){
for(int j = 1; j <= row-i; j++){
System.out.print(" ");
}
for(int j = 1; j <= i*2-1; j++){
if(j == 1 || j == i*2-1 || i == row)
System.out.print("*");
else System.out.print(" ");
}
System.out.println();
}
}
打印结果:
System.out.println("输入行数:");
int row3 = in.nextInt();
for (int i = 1; i <= row; i++){
for(int j = 1; j <= row-i; j++){
System.out.print(" ");
}
for(int j = 1; j <= i*2-1; j++){
if(j == 1 || j == i*2-1 )
System.out.print("*");
else System.out.print(" ");
}
System.out.println();
}
for (int i = 1; i <= row3; i++){
for(int j = 1; j <= i; j++){
System.out.print(" ");
}
for(int j = 1; j <= (row3-i)*2-1; j++){
if(j == 1 || j == (row3-i)*2-1)
System.out.print("*");
else System.out.print(" ");
}
System.out.println();
}
打印结果:
跳转控制语句
break
终止语句块。 break可以和标签使用
label1:{
label2:{
label3:{...break labeln}
}
}
1、break语句可以通过 label 来指定退出哪层。 2、label1是标签,名字由程序员指定。 3、在实际开发中,尽量不要使用标签。(降低可读性) 4、若没有指定标签,默认退出最近循环体。
案例
int n = 3;
Scanner in = new Scanner(System.in);
while(n-- > 0){
System.out.println("请输入用户名:");
String a = in.next();
System.out.println("请输入密码:");
String b = in.next();
if( a.equals("丁真") && b.equals("666")){
System.out.println("登陆成功");break;
}else
System.out.println("登录失败,还有"+n+"次机会");
}
continue
1、结束本次循环,继续执行下一次循环。 2、也可指明要跳过哪层循环。
return
使用在方法,表示跳出所在方法。
|