Java流程控制

1. 用户交互Scanner

Java5的新特征:通过Scanner类获取用户输入

通过Scanner类的next()方法和nextLine()方法获取输入字符串,使用前使用hasNext()和hasNextLine()判断是否有输入数据

ec02752da33027b2d4b8b680dd0541b0

1. next方式接收

代码示例

package com.baidu.www.com.baidu;

import java.util.Scanner;

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

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

        // 判断用户有没有输入字符串
        if(scanner.hasNext()){
            // 使用next方式接收
            String str = scanner.next();
            System.out.println("输出的内容为:" + str);
        }

        // 凡是属于IO流的类,如果不关闭,会一直占用资源,用完要关掉。
        scanner.close();
    }
}

2. nextLine接收

代码示例

package com.baidu.www.com.baidu;

import java.util.Scanner;

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

        System.out.println("使用nextLine方式接收:");

        // 判断用户有没有输入字符串
        if(scanner1.hasNextLine()){
        // 使用next方式接收
            String str = scanner1.nextLine();
            System.out.println("输出的内容为:" + str);
        }

        // 凡是属于IO流的类,如果不关闭,会一直占用资源,用完要关掉。
        scanner1.close();
    }
}

2. Scanner进阶使用

1. nextInt方式和nextFloat方式接收

代码示例

package com.baidu.www.com.baidu;

import java.util.Scanner;

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

        // 从键盘接收数据
        int i = 0;
        float f = 0.0f;

        System.out.println("请输入整数:");

        if(scanner.hasNextInt()){
            i = scanner.nextInt();
            System.out.println("整数数据:" + i);
        }else{
            System.out.println("输入的不是整数数据!");
        }

        System.out.println("请输入小数:");

        if(scanner.hasNextFloat()){
            f = scanner.nextFloat();
            System.out.println("整数数据:" + f);
        }else{
            System.out.println("输入的不是小数数据!");
        }

        scanner.close();
    }
}

2. 示例

代码示例

package com.baidu.www.com.baidu;

import java.util.Scanner;

public class test {
    public static void main(String[] args) {
        // 输入多个数字,求其总数与平均数,每输入一个数字用回车确认,通过输入非数字结束输入,输出执行结果。
        Scanner scanner = new Scanner(System.in);

        // 和
        double sum = 0;
        // 计算输入了多少个数字
        int m = 0;

        // 通过循环判断是否还有输入,并在里面对每一次进行求和统计
        while (scanner.hasNextDouble())
        {
            double x = scanner.nextDouble();
            m++;
            sum += x;
            System.out.println("你输入了第" + m + "个数据,当前结果sum=" + sum);
        }
        System.out.println(m + "个数的和为:" + sum);
        System.out.println(m + "个数的平均值为:" + (sum / m));

        scanner.close();
    }
}

3. 顺序结构

4. 选择结构

(1)if

a. if单选择结构 if

b. if双选择结构 if else

c. if多选择结构 if else if else

d. 嵌套的if结构 if if

代码示例

package com.baidu.www.com.baidu;

import java.util.Scanner;

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

        String s = scanner.nextLine();

        System.out.println("请输入字符串:");

        if(s.equals("hello")) {
            System.out.println(s);
        } else if (s.equals("world")) {
            System.out.println(s);
        } else{
            System.out.println("Error!");
        }

        System.out.println("End!");

        scanner.close();
    }
}

(2)switch

switch多选择结构

代码示例

package com.baidu.www.com.baidu;

import java.util.Scanner;

// JDK新特性,表达式结果可以是字符串
// 字符的本质还是数字
// 反编译 java --- class(字节码文件) --- 反编译(IDEA)

public class test {
    public static void main(String[] args) {
        char grade = 'C';

        switch (grade){
            case 'A':
                System.out.println("优秀");
                break;
            case 'B':
                System.out.println("良好");
                break;
            case 'C':
                System.out.println("及格");
                break;
            default:
                System.out.println("挂科");
        }
    }
}

5. 循环结构

(1)while循环

代码示例

package com.baidu.www.com.baidu;

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

(2)do...while循环

代码示例

package com.baidu.www.com.baidu;

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

(3)for循环

快捷键:100.for

代码示例

package com.baidu.www.com.baidu;

public class test {
    public static void main(String[] args) {
        int a = 1;

        for (int i = 0; i < 101; i++) {
            System.out.println(i);
        }

        // 死循环
        for(; ; ){}
    }
}

练习1:计算0到100之间的技术和偶数的和

代码示例

package com.baidu.www.com.baidu;

public class test {
    public static void main(String[] args) {
        int oddSum = 0;
        int evenSum = 0;

        for (int i = 0; i < 101; i++) {
            if(i%2!=0) oddSum += i;
            else evenSum += i;
        }
        System.out.println(oddSum);
        System.out.println(evenSum);
    }
}

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

代码示例

package com.baidu.www.com.baidu;

public class test {
    public static void main(String[] args) {
        for (int i = 1; i < 1001; i++) {
            if(i%5==0){
                System.out.print(i+"\t");
            }
            if(i%(5*3)==0){
                System.out.println();
//                System.out.print("\n");
            }
        }
        
        // printLn 输出后换行
        // print   输出后不会换行
    }
}

练习3:打印九九乘法表

代码示例

package com.baidu.www.com.baidu;

public class test {
    public static void main(String[] args) {
        for (int i = 1; i < 10; i++) {
            for (int i1 = 1; i1 <= i; i1++) {
                System.out.print(i + "*" + i1 + "=" + (i*i1) + "\t");
            }
            System.out.println();
        }
    }
}

(4)用于数组的增强型for循环

代码示例

package com.baidu.www.com.baidu;

public class test {
    public static void main(String[] args) {
        int[] numbers = {10, 20, 30, 40, 50};

        for(int x : numbers)
            System.out.println(x);
    }
}

(5)break、continue、goto

代码示例

package com.baidu.www.com.baidu;

public class test {
    public static void main(String[] args) {

        // 打印101 - 150之间所有的质数

        int count = 0;

        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+"\t");
        }
    }
}

(6)练习

代码示例

# 打印三角形及Debug
package com.baidu.www.com.baidu;

public class test {
    public static void main(String[] args) {
        for (int i = 1; i <= 5; i++) {
            for (int i1 = 5; i1 >= i; i1--)
                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();
        }
    }
}
posted @ 2025-08-09 21:03  无敌美少女战士  阅读(4)  评论(0)    收藏  举报