1.顺序结构

  • Java的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句执行
  • 顺序结构是最简单的算法结构
  • 语句与语句之间,框与框之间是按从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的,它是任何一个算法都离不开的一种基本算法结构

2.选择结构

if……else语句

package com.xf2021.www;
import java.util.Scanner;
public class Demo1 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入内容:");
        String data=scanner.nextLine();
        if (data.equals("abc")){
            System.out.println("you are right!");
        } else if(data.equals("123")){
            System.out.println("right!");
        }else{
            System.out.println("No!!!");
        }
    scanner.close();
    }
}

注:这里在一个if……else语句后直接加if……else可达到多重判断(只要有一个判断为true,则跳过其他判断,继续向下执行), data.equals("123") 用来判断字符串是否相等,这里尽量避免使用data==“123”,因为==判断的是内存地址值,要地址相同才能相等

switch语句

switch语句中的变量类型可以是:

  • byte,short,int或者char
  • 从Java SE 7开始
  • switch支持字符串String类型
  • 同时case标签必须为字符串常量或字面量
package com.xf2021.www;
import java.util.Scanner;
public class Demo1 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入等级:");
        String data=scanner.nextLine();
        switch (data){
            case "A":
                System.out.println("优秀");
                break;
            case "B":
                System.out.println("良好");
                break;
            case "C":
                System.out.println("不及格");
                break;
            default:
                System.out.println("未知等级");
        }
    scanner.close();
    }
}

注:case具有穿透性,所以需要在所有case之下加上break;跳出选择,不然会将以下所有情况都输出

3.循环结构

while循环(我能理解为时钟吗?

//简单的while求和
package com.xf2021.www;
import java.util.Scanner;
public class Demo1 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入求和边界:");
        int data;
        data = Integer.parseInt(scanner.nextLine());
        int i=0;
        int sum=0;
        while (i<data){
            i++;
            sum=sum+i;
        }
        System.out.println("求和结果为:"+sum);
    scanner.close();
    }
}

注:String类型数据转换为int需要用Integer.parseInt()

do...while循环

  • 对于while语句而言,如果不满足条件,则不能进入循环,但有时候我们需要即使不满足条件,也至少执行一次
  • do...while循环和while循环相似,不同的是,do...while循环至少会执行一次
  • While和do...While的区别:
    • while先判断后执行,do...while是先执行后判断
    • Do...while总是保证循环体至少被执行一次!这是他们的主要差别
  • 个人理解:While和do...While分别类似于易语言的 循环判断首()跟判断循环首()

For循环

  • for循环语句是支持迭代的一种通用结构,是最有效,最灵活的循环结构
  • for循环执行的次数是在执行前就确定的

练习:计算0-100之间奇数跟偶数和

package com.xf2021.www;
import java.util.Scanner;
public class Demo1 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入求和边界:");
        int data = Integer.parseInt(scanner.nextLine());
        int jishusum=0;
        int oushusum=0;
        for (int i = 0; i <= data; i++) {
            if(i%2!=0){
                jishusum+=i;
            }else{
                oushusum+=i;
            }
        }
        System.out.println("奇数和结果为:"+jishusum);
        System.out.println("偶数和结果为:"+oushusum);
    scanner.close();
    }
}

练习:用for循环输出1-1000之间能被5整除的数,并且每行输出三个

package com.xf2021.www;
import java.util.Scanner;
public class Demo1 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入边界:");
        int data = Integer.parseInt(scanner.nextLine());
        for (int i = 0; i <= data; i++) {
            if(i%5==0){
                System.out.print(i + "t");
            }if(i%15==0){
                System.out.println();
            }
        }
    scanner.close();
    }
}

打印自定义乘法表

package com.xf2021.www;
import java.util.Scanner;
public class Demo1 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入边界:");
        int data = Integer.parseInt(scanner.nextLine());
        for (int i = 1; i < data; i++) {
            int result=0;
            for (int w = 1; w <= i; w++) {
                result=i*w;
                System.out.print(""+i+"x"+w+"="+result+"t");
            }
            System.out.println();
        }
    scanner.close();
    }
}

增强for循环(主要用于遍历数组)

package com.xf2021.www;
public class Demo1 {
    public static void main(String[] args) {
    int[] sum={10,20,30,40,50};
    for(int x:sum){
        System.out.println(x);
    }
    }
}

for(int x:sum) 意思为定义一个整数变量x,将sum整数型数组里的第n项传递给x然后打印出来

4.break与continue

  • break在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环。不执行循环中剩余的语句。(break语句也在switch语句中使用)
  • continue语句用于在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定

5.goto(lable标签)

示例:取1-100内的质数

package com.xf2021.www;
public class Demo1 {
    public static void main(String[] args) {
        int count = 0;
        outer:for (int i = 1; i <100 ; i++) {    
            for(int j=2;j<i;j++){                
                if(i%j==0){
                    continue outer;
                }
            }
            System.out.print(i+"t");
        }
    }
}
//第一个循环用来循环1-100
//第二个循环用来循环(2,i)的数并判断,只要有数一个取模取到0就跳到外部循环

注: outer:for (int i = 1; i <100 ; i++) 中 outer: 相当于为外部for循环加上了一个标签,通过continue可直接破坏循环结构跳到标签处的外部循环继续运行

(PS:这个取质数的Demo建议背下来)


You got to put the past behind you before you can move on.