Java流程控制

Java流程控制

每日小技巧:按住Ctrl键再鼠标左键点击IDEA中的类名,即可进入其源代码页面,如果再点击左侧边框上的Structure选项,则左侧会出现一个包括该类所有方法的菜单栏。

用户交互Scanner

  • next方式
package kuangstudy.scanner;

import java.util.Scanner;

public class Demo1 {
    
    public static void main(String[] args) {
        
        // 创建一个扫描器对象,用来接收键盘数据
        Scanner scanner_a = new Scanner(System.in);
        
        System.out.println("使用next方式接收:");
        
        // 判断用户有没有输入字符串
        if (scanner_a.hasNext()) {
            // 使用next方式接收
            String str = scanner_a.next();
            System.out.println("输入的内容为:"+str);
        }
        
        // 凡是属于IO流(输入输出流)的类如果不关闭会一直占用资源,要养成好习惯,用完就关掉
        scanner_a.close();
    }
}

运行结果如下:

  • 如图所示,用户输入为Hello World!,但程序只接受到了Hello.

  • nextLine方式

package kuangstudy.scanner;

import java.util.Scanner;

public class Demo2 {
    public static void main(String[] args) {
        // 从键盘接收数据
        Scanner scanner_b = new Scanner(System.in);
        
        System.out.println("使用nextLine方式接收:");
        
        // 判断是否还有输入
        if (scanner_b.hasNextLine()) {
            String str = scanner_b.nextLine();
            System.out.println("输入的内容为:"+str);
        }
        
        scanner_b.close();
    }
}
package kuangstudy.scanner;

import java.util.Scanner;

public class Demo3 {
    public static void main(String[] args) {
        // 从键盘接收数据
        Scanner scanner_c = new Scanner(System.in);
        
        System.out.println("使用nextLine方式接收:");
        
        String str = scanner_c.nextLine();
        System.out.println("输入的内容为:"+str);
        
        scanner_c.close();
    }
}

运行结果如下:

如图所示,程序完全接收了用户的输入.

总结
  • next():
  1. 一定要读取到有效字符后才可以结束输入。
  2. 对输入有效字符之前遇到的空白,next()方法会自动将其去掉。
  3. 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
  4. next()不能得到带有空格的字符串
  • nextLine():
  1. 以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符。
  2. 可以获得空白

Scanner进阶使用

if语句
package kuangstudy.scanner;

import java.util.Scanner;

public class Demo4 {
    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();// 将接收到的整数赋值给i
            System.out.println("整数数据:"+i);
        }else {
            System.out.println("输入的不是整数数据!");
        }
        
        System.out.println("================");
        
        System.out.println("请输入小数:");
        
        // 如果……那么……
        if (scanner.hasNextFloat()) {
            f = scanner.nextFloat();// 将接收到的浮点数赋值给f
            System.out.println("小数数据:"+f);
        }else {
            System.out.println("输入的不是小数数据!");
        }
		
		scanner.close();
    }
}

运行结果如下:
正常输入

非正常输入

只要是合法数字,无论正负,都会归为小数(浮点数),如下:

下面这个是自娱自乐

while语句
package kuangstudy.scanner;

import java.util.Scanner;

public class Demo5 {
    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 = m + 1;// m++
            sum = sum + x;
            System.out.println("你输入了第"+m+"个数据,然后当前结果sum="+sum);
        }
        System.out.println(m+"个数的和为"+sum);
        System.out.println(m+"个数的平均值是"+(sum/m));
        
        scanner.close();
    }
}

运行结果如下:

顺序结构

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

选择结构

if单选择结构
  • 语法:
if (布尔表达式) {
	// (如果布尔表达式为true)将执行的语句
}
if双选择结构
  • 语法:
if (布尔表达式) {
    // (如果布尔表达式为true)将执行的语句
} else {
    // 布尔表达式为false时将会执行的语句
}
if多选择结构
  • 语法:
if (布尔表达式1) {
    // (如果布尔表达式为true)将执行的语句
} else if (布尔表达式2) {
    // 如果上面判断为false且布尔表达式2为true将会执行的语句
} else if (布尔表达式3) {
    // 如果上面判断都为false且布尔表达式3为true将会执行的语句
} else if (布尔表达式4) {
    // 如果上面判断都为false且布尔表达式4为true将会执行的语句
} else {
    // 如果上面判断都为false将会执行的语句
}
嵌套的if结构
  • 语法:
if (布尔表达式1) {
    ……
	if (布尔表达式2) {
        ……
    }
    
}

switch多选择结构

  • switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。

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

    • byte、short、int 或者 char,
    • 从JAVA SE 7开始,switch 支持字符串的String类型了,
    • 同时case标签必须为字符串常量或字面量。
  • 语法:

switch(expression){
    case value :
        // 语句
        break;// 可选(阻止case穿透)
    case value :
        // 语句
        break;// 可选
    // 你可以有任意数量的case语句
    default : // 可选
        // 语句
}

上述代码中,break的作用是阻止case穿透,如果没有加上break的话,当case 后的值value与switch语句的判断变量expression相同时,不仅该case语句会被执行,其后面的所有case语句及default语句也都会被自动执行。

while循环详解

while循环

实现1+2+3+……+100=?的计算

package kuangstudy.struct;

public class Demo1 {
    public static void main(String[] args) {
        // 计算1+2+3+……+100=?
        
        int i = 0;
        int sum = 0;
        
        while(i<=100){
            sum = sum + i;
            i++;
        }
        
        System.out.println("1+2+3+……+100="+sum);// 5050
    }
}
do…while循环
package kuangstudy.struct;

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

do…while 循环和while循环相似,不同的是,do…while 循环至少会执行一次

While和do-While的区别:

  • while先判断后执行,dowhile是先执行后判断!
  • Do…while总是保证循环体会被至少执行一次!这是它们的主要差别。

for循环详解

  • for循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构。

快捷键

例如:在IDEA中输入100.for然后回车,会自动生成

for(int i = 0; i < 100; i++) {}

for(;;){
    // 语句
} // 可以运行,但这是一个死循环

计算0~100之间奇数和偶数各自的和

package kuangstudy.struct;

public class Demo3 {
    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("0~100的奇数和:"+oddsum);// 2500
        System.out.println("0~100的偶数和:"+evensum);// 2550
    }
}

用while或for循环输出1~1000之间能被5整除的数,并且每行输出3个

package kuangstudy.struct;

public class Demo4 {
    public static void main(String[] args) {
        // 用while或for循环输出1~1000之间能被5整除的数,并且每行输出3个
        
        int i = 1;
        while(i<=1000){
            
            if (i%5==0) {
                System.out.print(i+"\t");
            }
            
            if (i%15==0) {
                System.out.println("");
            }
            
            i++;
        }
        
        System.out.println("");
        System.out.println("while循环结束");
        System.out.println("================");
        
        for(int j = 1;j <= 1000;j++){
            if (j%5==0) {
                System.out.print(j+"\t");
            }
            
            if(j%15==0) {
                System.out.println("");
            }
        }
        
        System.out.println("");
        System.out.println("for循环结束");
    }
}

println:输出完会换行

print:输出完不会换行

输出九九乘法表

package kuangstudy.struct;

public class Demo5 {
    public static void main(String[] args) {
        // 打印九九乘法表
        for(int j = 1;j <= 9;j++){

            for(int i = 1;i <= j;i++){
                System.out.print(i+"*"+j+"="+j*i+"\t");

            }

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

运行结果如下:

增强for循环
  • 通过代码来了解它

参考代码

package kuangstudy.struct;

public class Demo6 {
    public static void main(String[] args) {
        int[] numbers = {10,20,30,40,50};// 定义了一个数组
        
        for(int i = 0;i < 5;i++){
            System.out.println(numbers[i]);
        }
        System.out.println("================");
        
        // 遍历数组元素
        for(int x:numbers){
            System.out.println(x);
        }
    }
}

上述参考代码中俩段for循环语句的输出结果相同,都是依次输出10,20,30,40,50,即依次输出numbers数组内的元素。

break 与 continue

  • break用于强制退出循环,不执行循环中剩余的语句。(break也在switch语句中使用)
  • continue 语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句( 也就是跳过某次循环 ),接着进行下一次是否执行循环的判断。

打印三角形

package kuangstudy.struct;

public class Demo7 {
    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();
        }
    }
}

运行结果如下:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值