基本结构(二) 结构分类 :
顺序结构:从上向下,依次执行
选择结构:根据实际情况选择一条分支执行
循环结构:在满足一定条件下,可以重复执行的语句
选择结构 分类 :
if语句 格式1 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 /* if(布尔值的表达式){ //要执行的语句 } */ //布尔表达式值为true。则执行;为false,不执行 //例: import java.util.Scanner; public class Test{ public static void main(String[] args){ Scanner scanner=new Scanner(System.in); int age=scanner.nextInt(); if(age > 18){ System.out.println("已成年"); } } }
格式2 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 /* if(布尔值的表达式){ //布尔表达式为true,要执行的语句 }else{ //布尔表达式为false,要执行的语句 } */ //例: import java.util.Scanner; public class Test{ public static void main(String[] args){ Scanner scanner=new Scanner(System.in); int age=scanner.nextInt(); if(age > 18){ System.out.println("已成年"); }else{ System.out.println("未成年"); } } }
格式3 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 /* if(布尔值表达式){ //语句体1 }else if{ //语句体2 }else{ //语句体3 */ //例: import java.util.Scanner; public class Test{ public static void main(String[] args){ Scanner scanner=new Scanner(System.in); System.out.print("请输入年龄:"); int age=scanner.nextInt(); if(age < 18){ System.out.println("未成年"); }else if(age >= 18 && age < 30){ System.out.println("青年"); }else if(age >= 30 && age < 50) { System.out.println("中年"); }else{ System.out.println("老年"); } } }
switch语句 格式
1 2 3 4 5 6 7 8 9 10 11 12 switch(值){ case 值1: 语句 break; case 值2: 语句 break; …… default: 语句 break; }
执行流程 :先看switch括号的值,然后与case后值匹配,有则执行相关case后语句,否则执行default控制的语句。例 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 import java.util.Scanner; public class Test{ public static void main(String[] args){ Scanner scanner=new Scanner(System.in); System.out.print("请输入数字:"); int a=scanner.nextInt(); switch(a){ case 0: System.out.println("zero"); break; case 1: System.out.println("one"); break; case 2: System.out.println("two"); break; default: System.out.println("其他"); break; } } }
注 :
case后必须是常量
switch后面的值只能是byte,short,int,字符,字符串,枚举
break可加可不加,当程序执行到某个case后的代码,未遇到break时,就会一直执行
default可省,但尽量加上
循环语句
for循环语句
while循环语句
do…while循环语句
for循环 格式 :
1 2 3 4 for(初始化表达式1;判断表达式(boolean)2;迭代部分4) { 循环体3 }
例子 打印0-10 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 public class He{ public static void main(String[] args){ for(int i=0;i<=10;i++){ System.out.println(i); } } } /*运行结果 0 1 2 3 4 5 6 7 8 9 10 */
打印1-100之间偶数的和 1 2 3 4 5 6 7 8 9 10 11 12 13 14 public class Test{ public static void main(String[] args){ int sum=0; for(int i=1;i<=100;i++){ if(i%2==0){ sum+=i; } } System.out.println(sum); } } /*运行结果 2550 */
打印100-999之间的所有水仙花数 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 public class Test{ public static void main(String[] args){ int a=0; int b=0; int c=0; for(int i=100;i<=999;i++){ a=i%10; b=i/10%10; c=i/100; if((a*a*a+b*b*b+c*c*c)== i){ System.out.println(i); } } } } /*运算结果 153 370 371 407 */
while循环 格式 :
1 2 3 4 while(循环条件){ 循环体 迭代部分 }
例子 打印1-10 1 2 3 4 5 6 7 8 9 public class Test{ public static void main(String[] args){ int i=1; while(i<=10){ System.out.println(i); i++; } } }
do…while循环 格式 :
1 2 3 4 do{ 循环语句; 控制条件语句; }while(boolean);
while循环和do…while循环的区别 while语句先判断后执行,循环体可能不执行。 do…while语句先执行后判断,循环体至少执行一次。
关键字continue,break和return break
跳出switch语句。
当break关键字用于循环时,会终止循环
可用于父循环,给父循环起别名
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 public class Test{ public static void main(String[] args){ b:for(int i=1;i<=5;i++){ for(int j=1;j<=5;j++){ if(j%3==0){ break b; } System.out.print(j+"\t"); } System.out.println(); } } } /* 1 2 */
continue
continue作用是结束本次循环,进入下一次循环。
可用于父循环,给父循环起别名
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 public class Test{ public static void main(String[] args){ b:for(int i=1;i<=5;i++){ for(int j=1;j<=5;j++){ if(j%3==0){ continue b; } System.out.print(j+"\t"); } System.out.println(); } } } /* 1 2 1 2 1 2 1 2 1 2 */
return
结束当前方法
结束当前方法并返回指定结果
循环嵌套 一个循环当另一个循环的循环体
例子 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 //九九乘法表 public class Test{ public static void main(String[] args){ 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(); } } } /*运算结果 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81 */
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 //打印1000内所有素数,每行5个 public class Test{ public static void main(String[] args){ int count=0; for(int i=2;i<=1000;i++){ boolean flag=true; for(int j=2;j<=i/2;j++){ if(i%j==0){ flag=false; break; } } if(flag==true){ System.out.print(i+"\t"); count++; if(count%5==0) { System.out.println(); count=0; } } } } } /* 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 211 223 227 229 233 239 241 251 257 263 269 271 277 281 283 293 307 311 313 317 331 337 347 349 353 359 367 373 379 383 389 397 401 409 419 421 431 433 439 443 449 457 461 463 467 479 487 491 499 503 509 521 523 541 547 557 563 569 571 577 587 593 599 601 607 613 617 619 631 641 643 647 653 659 661 673 677 683 691 701 709 719 727 733 739 743 751 757 761 769 773 787 797 809 811 821 823 827 829 839 853 857 859 863 877 881 883 887 907 911 919 929 937 941 947 953 967 971 977 983 991 997 */