程序流程控制
一、选择结构
1、if选择结构
*简单if语句
if( 关系表达式<或者是布尔表达式> )
{
语句体(true就成立执行语句体,false就绕过了语句体,直接输出结束。);
}
package com.sh.work;
public class If1 {
public static void main(String[] args) {
int a = 1;
int b = 1;
//如果成立就打印yes
if( a == b ){
System.out.println("yes");
}
}
}
*标准语句
if(关系表达式){
语句体1;
}else{
语句体2;
}
注意:如果关系表达式为ture则执行语句体1,如果表达式为false则执行语句体2; 在执行的时候不能两个都执行,也不能两个都不执行。
package com.sh.work;
public class If2 {
public static void main(String[] args) {
double score = 55;
if (score >= 60){
System.out.println("恭喜你,成绩合格");
}else{
System.out.println("很遗憾,成绩不合格");
}
}
}
*扩展语句
if(判断条件1){
语句体1;
}else if(判断条件2){
语句体2;
}
...........
else if(判断条件n){
语句体n;
}else{
语句体n+1;
}
注意:如果满足条件一,则下面的将不再执行;如果为false则执行语句体2、3、n。有一个满足的下面的将不再执行;如果以上的都不满足,将会无条件的执行else里的n+1的条件语句。
package com.sh.work;
public class If3 {
public static void main(String[] args) {
int a = 3;
int b = 2;
if(a == 1 && b == 2){
System.out.println("yes1");
} else if( a < 2 || b > 3){
System.out.println("yes2");
} else if( a >= 3 && b == 2){
System.out.println("yes3");
} else{
System.out.println("yes4");
}
}
}
package com.sh.work;
//字符串判断相等(使用 "equal")
public class If4 {
public static void main(String[] args) {
String name = new String("张三");
if(name.equals("王五")){
System.out.println("yes1");
} else if( "赵四".equals(name)){
System.out.println("yes2");
} else if( name.equals("张三")){
System.out.println("yes3");
} else{
System.out.println("yes4");
}
}
}
2、switch选择结构
*break关键字
break关键字可以用在switch中,一旦执行,整个switch将立刻结束
break关键字也可以用在其他语句中,整个循环语句立刻结束,打断循环
*default关键字
default的作用是在case匹配失败之后才会被执行,打印出来相对应的输出信息
*continue关键字
contine关键字立即跳过本次的循环,进入到下一个循环语句当中
package com.sh.work;
public class Switch {
public static void main(String[] args) {
char grade = 'c';
switch (grade) {
case 'a':
System.out.println("优");
break;
case 'b':
System.out.println("良");
break;
//break在整个语句中,一旦被执行将会结束整个循环
//c和d如果不加break将会打印输出“中”后面的所有的输出字符
case 'c':
System.out.println("中");
break;
case 'd':
System.out.println("差");
break;
//default的作用是在case匹配失败之后才会被执行,打印出来相对应的输出信息
default:
System.out.println("您的输入有误!");
}
}
}
3、循环结构
*while循环
在进行执行的时候首先对条件语句进行判断才进行执行,在循环次数不确定的时候通常使用while循环语句
初始表达式;
while(条件判断){
循环语句;
步进语句;
}
例1:使用whlle循环语句来计算1+2+3+……+100的和
package com.sh.work;
public class While1 {
public static void main(String[] args) {
int i = 0;
int sum = 0;
while(i <= 100){
sum = sum + i;
i++;
}
System.out.println(sum);
}
}
*do while 循环
初始语句;
do{
循环体;
步进语句;
}while(条件判断表达式);
4、for循环
在执行的时候先进性判断然后在执行,在执行的时候循环次数确定
for(初始值;条件表达式;步进语句){
循环体1;
}else{
循环体2;
}
例1:求100以内(包括100)的奇数偶数的和以及总体的和
package com.sh.work;
public class for1 {
public static void main(String[] args) {
int sum1 = 0;
int sum2 = 0;
for(int i = 0;i <= 100;i++){
if(i %2 !=0){
sum1+=i;
}else{
sum2+=i;
}
System.out.println("此时和为:"+sum1);
System.out.println("此时和为:"+sum2);
}
System.out.println("此时和为:"+sum1+sum2);
}
}
例2:用for循环输出1-1000以内(包含1000)内所有可以被5整除的数,并且每一行只打印三个
package com.sh.work;
public class for2 {
public static void main(String[] args) {
for(int i =0;i < 1000;i++){
if(i % 5 == 0){
System.out.println(i+"\t");
//上制表符用于在文本输出中产生水平间距的特殊字符,制表符通常用转义序列 “\t” 来表示
// 当程序执行到输出制表符时,它会在当前输出位置插入足够的空格
// 使光标移动到下一个预定义的制表位置,这有助于在文本中创建垂直对齐的列或者在输出中产生固定的间距
}
if(i %(5*3) == 0){
//如果i能被15整除(即每输出3个能被5整除的数)
System.out.println("\n");
}
}
}
}
例3:打印等腰三角形
package com.sh.work;
public class for3 {
public static void main(String[] args) {
for(int i = 1;i <= 5;i++){
//外层循环,控制三角形的行数,从第一行到第五行
for(int j = 5;j >= i;j--){
System.out.print(" ");
}
//在每行开始输出前,先输出一定数量的空格,用来控制每行的缩进,使三角形图案向右侧靠齐
for (int j = 1;j <= i;j++){
System.out.print("*");
}//左侧部分
for (int j = 1;j < i;j++) {
System.out.print("*");
}//右侧部分
System.out.println();
}
}
}
例4:利用for循环打印九九乘法表
package com.sh.work;
public class for4 {
public static void main(String[] args) {
//只要减少重复项即可,我们发现j是不变的,只有i<j的时候才能满足
for (int j = 1; j <= 9; j++) {
//外层循环控制乘法表的行数,从1到9
for (int i = 1; i <= j; i++) {
//内层循环控制每一行输出的表达式,从1到j
//输出成1*i的形式,此时应该考虑怎么解决2* 3*的问题,如果解决的话需要将常量1改成变量的形式,在加一个for循环
System.out.print(j + "*" + i + "=" + (j * i) + "\t");
}
//每输出一行进行换行
System.out.println();
}
}
}
5、增强for
主要用来遍历数组和集合的。
for(声明语句:表达式){
代码句子;
}
for (element_type element : array_or_collection) {
// 循环体,对每个元素执行的操作
}
在这个语法结构中,element_type
是存储在数组或集合中的元素的数据类型,element
是在每次迭代时作为循环变量使用的变量名,array_or_collection
则是要进行迭代的数组或集合。
使用 for-each 循环时,不需要手动追踪当前迭代的索引或者使用索引来获取元素,而是直接将元素赋值给循环变量,这样就能够逐个访问数组或集合中的元素,简化了代码的书写,也提高了代码的可读性。
需要注意的是,for-each 循环只能用于遍历数组或实现了 Iterable 接口的集合类,无法用于普通的集合类。
package com.sh.work;
public class for5 {
public static void main (String[] args){
int[] i ={10,20,30,40,50};
//整型数组i,初始化包含五个元素的数组
for(int x =0;x<5;x++){
System.out.println(i[x]);
}
//数组每一项遍历出来赋值给int x,x指的就是每一个数值
for (int x:i){
System.out.println(x);
//使用 for-each 循环语法,遍历数组i中的每一个元素,将当前元素赋值给x
}
}
}