JavaSE之Java流程控制

用户交互scanner

Scanner的基本知识

定义

Scanner扫描器,可以通过Scanner类扫描用户在控制台输入的数据

基本语法

Scanner sc = new Scanner(System.in);

Scanner获取控制台输入的字符串

方法一:next()方法
实例
package com.lan.scanner;

import java.util.Scanner;//使用该类时要进行导包

public class Demo01 {
    public static void main(String[] args) {
        //用户交互scanner
        Scanner scanner = new Scanner(System.in);
        System.out.println("使用next方法接收:");

        if(scanner.hasNext()) {
            //程序在此处会等待用户输入
            String str = scanner.next();//当控制台输入的字符串是hello world时
            System.out.println("您输入的字符串是:"+str);//您输入的字符串是:hello
        }

        //凡是IO流的类在使用完毕后要关闭以节省资源,如果不关闭会一直占用资源
        scanner.close();
    }
}

总结
  1. 通常使用hasNext()方法判断控制台是否有输入
  2. 对于输入的有效字符之前遇到的空白字符,next()方法会将空白字符过滤掉
  3. 只有当读取到有效字符之后,其后面的空白字符才会被认为是分隔符或者结束符
  4. next()不能得到带有空格的字符串
方法二:nextLine()方法
实例
package com.lan.scanner;

import java.util.Scanner;

public class Demo02 {
    public static void main(String[] args) {
        //创建scanner对象
        Scanner scanner = new Scanner(System.in);

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

        //判断是否有字符串的输入
        if(scanner.hasNextLine()) {
            String str = scanner.nextLine();//当控制台输入的字符串是hello world时
            System.out.println("您输入的字符串是:"+str);//您输入的字符串是:hello world
        }

        //要养成良好的习惯,记得关闭资源
        scanner.close();
    }
}

总结
  1. 通常使用hasNextLine()方法判断控制台是否有输入
  2. 回车键作为结束符,可以获得带有空格的字符串

Scanner获取控制台其他类型数据

除了获取字符串外,Scanner也有相对应的方法以及has方法获取其他类型的数据和判断控制台是否有数据输入,下面以int型和float型数据为例,格式基本与字符串一致。

例如
package com.lan.scanner;

import java.util.Scanner;

public class Demo03 {
    public static void main(String[] args) {
        //通过Scanner获取整形数据
        Scanner scanner = new Scanner(System.in);

        //提示用户输入整数数据
        System.out.println("请输入一个整数数据:");
        if (scanner.hasNextInt()) {//判断用户是否输入数据
            int i = scanner.nextInt();//定义一个变量用于接收数据
            System.out.println("您输入的整数数据是:"+i);
        } else {
            System.out.println("您输入的不是整数数据!");
        }

        //提示用户输入小数数据
        System.out.println("请输入一个小数数据:");
        if (scanner.hasNextFloat()) {//判断用户是否输入数据,此判断有时也可省略,常用于循环中
            float f = scanner.nextFloat();//定义一个变量用于接收数据
            System.out.println("您输入的小数数据是:"+f);
        } else {
            System.out.println("您输入的不是小数数据!");
        }

        scanner.close();
    }
}

顺序结构

Java最基本的结构就是顺序结构,除非特别声明,否则就从上到下依次执行。

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

顺序结构是任何代码块都无法离开的最基本的算法结构。

选择结构

if单选择结构基本语法

if(布尔表达式) {
    //条件为真,即布尔表达式的值是true时,执行的代码
}

实例

package com.lan.structure;

import java.util.Scanner;

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

        System.out.println("请输入您想输入的内容");
        String str = scanner.nextLine();

        if (str.equals("hello")) {
            System.out.println("您输入的内容是hello");
        }

        System.out.println("ending");

        scanner.close();
    }
}

if双选择结构基本语法

if(布尔表达式) {
    //条件为真,即布尔表达式的值是true时,执行的代码
} else {
    //条件为假,即布尔表达式的值是false时,执行的代码
}

实例

package com.lan.structure;

import java.util.Scanner;

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

        System.out.println("请输入您的成绩:");
        double score = scanner.nextDouble();

        if (score >= 60) {
            System.out.println("恭喜您的成绩达标!");
        } else {
            System.out.println("很遗憾您的成绩不达标!");
        }

        scanner.close();
    }
}

if多选择结构基本语法

if(布尔表达式1) {
    //如果布尔表达式1的值是true,执行的代码
} else if(布尔表达式2) {
    //如果布尔表达式2的值是true,执行的代码
} else if(布尔表达式3) {
    //如果布尔表达式3的值是true,执行的代码
} else {
    //以上布尔表达式的值均为false时,执行的代码
}

实例

package com.lan.structure;

import java.util.Scanner;

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

        System.out.println("请输入您的成绩");

        double score = scanner.nextDouble();

        if (score == 100) {
            System.out.println("恭喜满分");
        }else if (score>=90 && score<100) {
            System.out.println("A级");
        }else if (score>=80 && score<90) {
            System.out.println("B级");
        }else if (score>=70 && score<80) {
            System.out.println("C级");
        }else if (score>=60 && score<70) {
            System.out.println("D级");
        }else if (score<60 && score>=0) {
            System.out.println("很遗憾不及格");
        }else {
            System.out.println("您输入的成绩不符合要求");
        }

        scanner.close();
    }
}

嵌套的if语句

if(布尔表达式1) {
    //如果布尔表达式1的值是true,执行的代码
    if(布尔表达式2) {
        //如果布尔表达式2的值是true,执行的代码
    }
}

实例

package com.lan.structure;

import java.util.Random;
import java.util.Scanner;

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

        Random r = new Random();

        //猜数字,1-10之间的随机数字
        int num = r.nextInt(10);//产生随机数
        int guess = num+1;

        System.out.println("请输入你猜的数字");

        int i = scanner.nextInt();

        if (i==guess) {
            System.out.println("恭喜您猜对了");
        } else {
            if (guess>i) {
                System.out.println("猜小了");
            } else {
                System.out.println("猜大了");
            }
        }

        //输出电脑产生的随机数
        System.out.println(guess);

        scanner.close();
    }
}

switch多选择结构

switch(expression) {
        //break没有写会产生case穿透现象
    case value:
        //语句
        break;//可选
    case value:
        //语句
        break;//可选
    //可以有任意数量的case语句
    default://可选
        //语句
}

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

byte, short, int, char

从JavaSE7开始,也支持字符串类型

同时case标签必须是字符串常量或字面量

实例1

package com.lan.structure;

public class SwitchDemo01 {
    public static void main(String[] args) {
        char c = 'A';

        //不加break会产生case穿透现象
        switch (c) {
            case 'A':
                System.out.println("A");
                break;
            case 'B':
                System.out.println("B");
                break;
            case 'C':
                System.out.println("C");
                break;
            default:
                System.out.println("D");
        }
    }
}

实例2

package com.lan.structure;

public class SwitchDemo02 {
    public static void main(String[] args) {
        String s = "lan";
        switch (s) {
            case "lan":
                System.out.println("lan");
                break;
            case "man":
                System.out.println("man");
                break;
            default:
                System.out.println("wu");
        }
    }
}

循环结构

while循环

语法

while(循环的条件) {
    //条件满足执行的代码
}

//避免死循环,要有让循环停下来的语句
//如果不满足循环的条件,根本不会进入循环,即不会执行条件满足执行的代码

实例

package com.lan.structure;

public class WhileDemo01 {
    public static void main(String[] args) {
        //计算1-100的和
        int i = 1;
        int sum = 0;
        while (i<=100) {
            sum += i;
            i++;
        }
        System.out.println("1-100的和是:" + sum);
    }
}

do…while循环

语法

do {
    //代码语句
} while(循环的条件);
    
//do...while和while循环类似,不同点是,do..while先执行do代码块中的代码,再判断循环条件是否满足,即do...while至少会循环一次
//while是先判断后循环,do...while是先循环后判断

实例

package com.lan.structure;

public class DoWhileDemo01 {
    public static void main(String[] args) {
        //计算1-100的和
        int i = 1;
        int sum = 0;

        do {
            sum += i;
            i++;
        } while (i<=100);
        System.out.println("1-100的和是:"+sum);
    }
}

for循环

语法

for(初始化;循环的条件;更新) {
    //循环条件满足的代码
}

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

实例1:计算1-100的奇数和及偶数和

package com.lan.structure;

//计算1-100的奇数和及偶数和
public class ForDemo01 {
    public static void main(String[] args) {
        
        int evenSum = 0;
        int oddSum = 0;

        for (int i = 1;i<=100;i++) {
            if (i%2==0) {
                evenSum += i;
            } else {
                oddSum += i;
            }
        }
        System.out.println("偶数和:"+ evenSum);
        System.out.println("奇数和:"+ oddSum);
    }
}

实例2:用while循环或者for循环输出1-1000中能被5整除的数,每三个一行输出

package com.lan.structure;

//用while循环或者for循环输出1-1000中能被5整除的数,每三个一行输出
public class ForDemo02 {
    public static void main(String[] args) {
        //用while循环
        int i = 1;
        int count = 0;
        while (i<=1000){
            if (i%5==0) {
                System.out.print(i + " ");//可以+"\t"
                count++;
                if (count==3) {//直接用i进行判断也可以
                    System.out.println();
                    count = 0;
                }
            }
            i++;
        }
        System.out.println();
        System.out.println("**********************");

        //用for循环
        int count1 = 0;
        for (int j = 1;j<=1000;j++) {
            if (j%5==0) {
                System.out.print(j+" ");
                count1++;
                if (count1==3) {
                    System.out.println();
                    count1 = 0;
                }
            }
        }

        System.out.println();
        System.out.println("**********************");
        //对上述算法的改进
        int count2 = 0;
        for (int k=1;k<=1000/5;k++) {
            System.out.print(k*5 + " ");
            count2++;
            if (count2==3) {
                System.out.println();
                count2=0;
            }
        }
    }
}

实例3:打印九九乘法表

package com.lan.structure;

//打印九九乘法表
public class ForDemo03 {
    public static void main(String[] args) {
        for (int i = 1;i<=9;i++) {
            for (int j = 1;j<=i;j++){
                System.out.print(j + "*" + i + "=" + i*j + "  ");
            }
            System.out.println();
        }
    }
}

增加for循环

此处先做个了解,等数组的时候再深入学习

Java5之后引入了增强for循环

语法

for(声明语句:表达式) {
    //循环执行代码
}
//声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素相等
//表达式:表达式是要访问的数组名,或者是返回值为数组的方法

break和continue

定义和区别

break:可以用在循环结构中,用于强行退出循环,不再执行循环中的语句,即不再判断循环条件是否满足,break也用在switch选择结构中。

continue:用在循环语句体中,用于终止某次循环,即跳过循环体中剩余部分代码,接着进行下一次的循环判断

label标签(了解)

常用于嵌套循环中。

举例

package com.lan.structure;

public class LabelDemo {
    //打印101-150的质数
    public static void main(String[] args) {
        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 + " ");
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值