选择结构

if语句:

  • if语句:如果if里面的表达式为真,执行if后面括号中的代码块,如果为假则执行if语句块后面的语句。

    1. int a=0;
    2. if (a==1){
    3. System.out.println(a);

    if else语句:

  • if else语句:从上往下挨个执行,只需要有一个成立,那么跳出整个结构,如果都不成立,则执行最后的else。

    1. if(a==0){
    2. System.out.println(1);
    3. }else if(a==2){
    4. System.out.println(2);
    5. }else {
    6. System.out.println(3);
    7. }

    switch语句:

    switch:条件成立执行分支,条件不成立继续向下判断分支,如果分支都不满足,则执行default语句块
    支持类型:int,byte,short,char,枚举类型。
    注意点:

  • 每个语句后面必须加break;

  • default语句必须放到最后

    1. switch (a){
    2. case 1 :
    3. System.out.println("第一名");
    4. break;
    5. case 2:
    6. System.out.println("第二名");
    7. break;
    8. case 3:
    9. System.out.println("第三名");
    10. break;
    11. default:
    12. System.out.println("没有名次");
    13. }

    总结:

  • if -else: 二选一

  • if-else-if:范围多选一
  • switch:定值多选一

    特殊:

    产生随机数

    int x=(int)(Math.random()*10);

    数据比较:

  • 八大本类型:用==比较。

  • 对象类型:只能用equals来比较。
  • equals方法如果数组值为空会报错 ```java string[] str={“12”,”13”,null}; string deta=”12”; if(str[i].equls(deta))//当str[3]是会报错,因为str[3]为空值换成deta.equls(str[i])就不会报错了
  1. ```java
  2. String s1 = "tom";
  3. String s2 = "hello";
  4. System.out.println(s1.equals(s2));
  5. //结果:false

输入字符:

  1. Scanner input=new Scanner(System.in);
  2. char c=input.next().charAt(0);

hasnext

hasnextint:判断写一个输入是不是int类型,如果是返回true,不是返回false

  1. Scanner input = new Scanner(System.in);
  2. int a = input.nextInt();
  3. if (input.hasNextInt()) {
  4. }

循环语句:

while语句:

先判断条件表达式是否成立,再执行语句块,如果不成立则跳过语句块,执行后面的语句

  1. while (表达式){
  2. 语句块
  3. }

do while语句:

先执行循环中的语句块,然后在判断while中的表达式,如果成立再次执行,如果不成立跳出循环,执行后面的语句

  1. do {
  2. 语句块
  3. }while (表达式);

for语句:

进入循环,先判断循环变量,第二步判断循环条件会否成立,第三步执行语句块,第四部循环变量自增,如果判断循环条件不成立,则直接跳出循环

  1. for (循环变量;循环条件;变量自增(自减);){
  2. 语句块;
  3. }

for语句增强版:

常用于数组遍历打印

  1. int stu[]={1,2,4,87,7,6,6,21,2,7,7,445,8,8};
  2. for (int i : stu) {
  3. System.out.print(i+" ");
  4. }

循环嵌套:

所有循环体中可以嵌套另外任意一个其他循环体,外层循环执行一遍,内层循环执行一个完整循环。
99乘法表打印:

  1. for (int i=1;i<=9;i++){
  2. for (int j=1;j<=i;j++){
  3. System.out.print(j+"*"+i+"="+i*j+"\t");
  4. }
  5. System.out.println();
  6. }

跳出语句:

break语句:

如果在循环体中加入break语句则结束本次循环

  1. for(int i=1;i<=5;i++){
  2. if(i>5){//if条件成立则执行break;
  3. break;//如果执行break,跳出循环体。
  4. }
  5. }

如果循环嵌套中需要让内层循环中的break控制到外层循环,可以给循环加一个标识符,从而达到控制外层循环的效果。

  1. outer: for(int i=0;i<10;i++){
  2. inner: for(int j=1;j<=10;j++){
  3. if(j>=5){
  4. break outer;
  5. }
  6. }
  7. }

continue语句:

强制循环提前返回,跳过本次循环体中的剩余部分,返回到循环控制条件处
如果在for循环体中用continue语句结束本次循环,需要把循环控制条件自减一位。

  1. for (int i = 1; i <= 5; i++) {
  2. System.out.print("请输入第" + i + "个学生的成绩:");
  3. double x = input.nextDouble();
  4. if (x < 0 || x > 100) {
  5. System.out.println("成绩不合法,请重新输入");
  6. i--;
  7. continue;
  8. }
  9. sum = sum + x;
  10. }

return语句:

结束当前方法,如果是调用,则返回调用该方法的语句处

程序调试:

可以在程序的任意地方加入断点,运行的时候就会在断点处停止程序,让用户下一步才会继续执行,方便观察参数的变化过程。
image.png