Java流程控制

Java流程控制

用户交互Scanner

  • java.util.Scanner使用这个包中Scanner类获取用户的输出
  • 基本语法
Scanner s = new Scanner(System.in);
  • 通过Scanner类的next() 与 nextLine() 方法获取输入的字符串,在读取前我们要使用hasNext() 与 hasNextLine()判断用户是否还有输入的数据

next():

  • 一定要读取到有效字符后才可以结束输出
  • 对于输入有效字符之前遇到的空白,next()方法会自动去除
  • 只有输入有效字符后才将其后面的空白作为分隔符或者结束符
  • next() 不能得到带有空格的字符串
package com.arbedu.scanner;

import java.util.Scanner;

public class Demo01 {

    public static void main(String[] args) {
        //创建一个扫描器对象,用于接收键盘数据
        Scanner scanner = new Scanner(System.in);

        System.out.println("使用next方法接收:");

        //判断用户有没有输入字符串
        if (scanner.hasNext()) {
            String str = scanner.next();
            System.out.println("输入的内容为:" + str);
        }
        //凡是属于IO流的类如果不关闭就会一直占用资源,要养成习惯用完就关掉
        scanner.close();

    }
}

输入:Hello world

输出: Hello

nextLine()

  • 以Enter(回车)为结束符,返回输入回车之前的所有字符
  • 可以获得空白
package com.arbedu.scanner;

import java.util.Scanner;

public class Demo02 {
    public static void main(String[] args) {
        // 从键盘接收数据
        Scanner scanner = new Scanner(System.in);

        System.out.println("使用nextLine()方法接受:");
        // 判断是否还有输入
        if(scanner.hasNextLine()) {
            String str = scanner.nextLine();
            System.out.println("输出的内容为:" + str);
        }

        scanner.close();

    }
}

输入:Hello world

输出:Hello world

顺序结构

Java的基本结构

顺序结构是最简单的算法结构

从上到下

选择结构

if单选择结构

package com.arbedu.structure;

import java.util.Scanner;

public class ifDemo01 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.println("请输入内容:");
        String s = scanner.nextLine();

        //equals:判断字符串是否相等
        if(s.equals("Hello")) {
            System.out.println(s);
        }
        System.out.println("End");


        scanner.close();
    }
}

if双选择结构

package com.arbedu.structure;

import java.util.Scanner;
public class ifDemo02 {
    public static void main(String[] args) {
        // 考试分数大于60分及格,小于60分不及格
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入成绩");
        int score = scanner.nextInt();
        if (score >= 60 ) {
            System.out.println("及格");
        }else{
            System.out.println("不及格");
        }
        scanner.close();
    }
}

if多选择结构

package com.arbedu.structure;

import java.util.Scanner;

public class ifDemo03 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int score = scanner.nextInt();
        //其中一个else if 为true 其他语句不执行
        if (score == 100) {
            System.out.println("恭喜满分");
        }else if(score < 100 && score >= 90){
            System.out.println("A");
        }else if(score < 90 && score >= 80){
            System.out.println("B");
        }else if(score < 80 && score >= 70){
            System.out.println("C");
        }else if(score < 70 && score >= 60){
            System.out.println("D");
        }else if(score < 60 ){
            System.out.println("不及格");
        }else {
            System.out.println("成绩不合法");
        }
    }
}

嵌套if结构

if() {
    if() {
        
    }
}

switch语句

package com.arbedu.structure;

public class switchDemo01 {
    public static void main(String[] args) {
        char grade = 'C';//JDK7新特性 switch可以识别string 利用反编译 hashcode
        switch (grade) {
            case 'A':
                System.out.println("优");
                break;// 打破 不执行后续case及default
            case 'B':
                System.out.println("良");
                break;
            case 'C':
                System.out.println("中");
                break;
            case 'D':
                System.out.println("阅");
                break;
            case 'E':
                System.out.println("再接再厉");
                break;
            default:
                System.out.println("未知");
                break;
        }
    }
}

循环结构

while循环

  • 基本格式
while (布尔表达式) {
// 循环体
}
  • 实例
package com.arbedu.structure;

public class WhileDemo01 {
    public static void main(String[] args) {
        // 输出1 - 100
        int i = 0;// 初始化
		//条件判断
        while (i < 100) { 
            i++; //迭代 循环体
            System.out.println(i); //循环体
        }
    }
}

  • 死循环
package com.arbedu.structure;

public class WhileDemo02 {
    public static void main(String[] args) {
        while (true) {
            // 等待客户端连接
            // 定时检查
            // while(true)是死循环 除非是特殊需求,一般情况下避免死循环,会影响程序性能或是系统卡死崩溃
        }
    }
}

  • 求和练习
package com.arbedu.structure;

public class WhileDemo03 {
    public static void main(String[] args) {
        // 计算1+2+3+...+100
        int i = 1;
        int sum = 0;
        while (i <= 100) {
            sum += i;
            i++;
        }
        System.out.println(sum);
    }
}

do-while循环

至少执行1次

package com.arbedu.structure;

public class DoWhileDemo01 {
    public static void main(String[] args) {
        int i = 0;
        int sum = 0;
      do {
          sum = sum + i;
          i++;
      }while(i <= 100);
      System.out.println(sum);
    }
}

  • while和do-while比较
package com.arbedu.structure;

public class DoWhileDemo02 {
    public static void main(String[] args) {
        int a= 0;
        while(a<0){
            System.out.println(a);	// 无输出结果
            a++;

        }
        System.out.println("=================");

        do{
            System.out.println(a);	//输出0
            a++;

        }while(a<0);
    }
}

For循环

package com.arbedu.structure;

public class ForDemo01 {
    public static void main(String[] args) {
        int a = 1;  //初始化

        while(a <= 100) {
            System.out.print(a+" ");  //循环体
            a++;   //迭代

        }
        System.out.println("while循环结束");

        // 写for的快捷方式:长度.for再回车 本代码可以用100.for
      
        for (int i = 1; i <= 100; i++) {
            System.out.print(i+" ");
        }
        System.out.println("for循环结束");
        // for死循环
        /*for(; ;) {
            
        }
        */
    }
}

for循环练习题

package com.arbedu.structure;

public class ForDemo02 {
    public static void main(String[] args) {
        //练习1:计算0到100之间奇数和偶数和
        int oddSum = 0;
        int evenSum = 0;

        for (int i = 0; i <= 100; i++) {
            if (i % 2 == 0) {// 偶数
                evenSum += i;
            }else {//奇数
                oddSum += i;
            }

        }
        System.out.println("奇数的和"+oddSum);
        System.out.println("偶数的和"+evenSum);
    }
}

package com.arbedu.structure;

public class ForDemo03 {
    public static void main(String[] args) {
        // 练习2:用while或for循环输出1-1000之间能被5整除的数,并且每行输出三个

        for (int i = 1; i < 1000; i++) {
            if (i % 5 == 0) {   // 能被5整除
                System.out.print(i+"\t");   //让结果更整齐
            }
            if(i % 15 == 0) {   // 每行输出三个:每过增加15(3 * 5)就换行
                System.out.println();   //换行 System.out.print("\n");也行
            }
        }

    }
}

package com.arbedu.structure;

public class ForDemo04 {
    public static void main(String[] args) {
        // 练习3:打印99乘法表
    /*
    1 * 1 = 1
    1 * 2 = 2   2 * 2 = 4
    1 * 3 = 3   2 * 3 = 6   3 * 3 = 9
    ...
	规律:每行都从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();
     }
    }
}

package com.arbedu.structure;

public class TestDemo {
    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();       // 换行
        }
                                        //可以自行调试理解本章循环的量的变化



    }
}

增强for

package com.arbedu.structure;

public class ForDemo05 {
    public static void main(String[] args) {
        int[] arr = {1,2,3,4,5,6,7,8,9,10}; // 定义了一个数组

        // 增强for 用于遍历数组与集合
        for (int x:arr) {
            System.out.println(x);
        }
        System.out.println("=====================");

        // 普通for
        for (int i = 0; i < 10; i++) {
            System.out.println(arr[i]);
        }
    }
}

break & continue

break

package com.arbedu.structure;

public class BreakDemo01 {
    public static void main(String[] args) {
        int i = 0;
        while(i < 100) {
            i++;
            System.out.println(i);
            if(i == 30) {
                break;  // 打破循环 不执行循环体内剩余语句(switch语句也常用)
            }
        }
        System.out.println("123"); //仍然执行
    }
}

package com.arbedu.structure;

public class ContinueDemo01 {
    public static void main(String[] args) {
        int i = 0;

        while (i < 100) {
            i++;
            if(i %10 == 0) {
                System.out.println();   //使缺少的数字清晰可见
                continue;   // 终止本次循环 不执行本次循环剩余语句 执行下一次循环
            }
            System.out.println(i);
        }
    }
}

goto关键字 label(不建议使用)

package com.arbedu.structure;

public class LabelDemo01 {
    public static void main(String[] args) {
        // 打印101 - 105 的质数

        int count = 0;
    // 不建议使用label
      outer:for(int i = 101; i < 150; i++) {
            for (int j = 2; j < i / 2; j++) {
                if (i % j == 0) {   //判断质数
                    continue outer;
                }
            }
          System.out.print(i + " ");

      }
    }
}

posted @ 2025-04-29 23:55  会编程的啊啵  阅读(7)  评论(0)    收藏  举报