06.Java流程控制

1、用户交互Scanner

  • java.util.Scanner 是java5 的新特性,我们可以通过 Scanner 类来获取用户的输入

  • 基本语法:
        Scanner s  = new Scanner(System.in)
    
  • 通过Scanner类的 next() 和nextLine()方法获取输入的字符串,在读取前我们一般需要 使用 hasNext() 与 hasNextLine() 判断是否还有输入的数据。

    //创建一个扫描器对象,用于接收键盘数据
    Scanner scanner = new Scanner(System.in);
    
    System.out.println("使用next方式接收");
    //判断用户有无输入字符串
    if (scanner.hasNext()){
        //使用Next 方法接收
        String str = scanner.next();
        System.out.println("next内容为"+ str);     //输入hello world 输出hello
    }
    
    Scanner scanner1 = new Scanner(System.in);
    System.out.println("使用nextLine方式接收");
    //判断用户有无输入字符串
    if (scanner1.hasNextLine()){
        //使用Next 方法接收
        String str1 = scanner1.nextLine();
        System.out.println("nextLine内容为"+ str1);     //输入hello world 输出hello
    }
    
    //凡是属于IO流的类如果不关闭就会一直占用资源,用完就关闭
    scanner.close();
    
  • next()

    • 1、一定要读取到有效字符后才可以结束输入
    • 2、对输入有效字符之前遇到的空白,next()方法会自动将其去掉
    • 3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符
    • 4、next() 不能得到带有空格的字符串
  • nextLine()

    • 1、以Enter 为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符
    • 2、可以获得空白。
    public static void main(String[] args) {
            //输入多个数字,求和 与 平均数,每输入一个数字回车确认,通过非数字的输入来结束输入并输出结果
            Scanner scanner = new Scanner(System.in);
            double sum = 0.0;
            int m = 0;
    
    
            System.out.println("请输入数字: ");
            while (scanner.hasNextDouble()) {
                double x = scanner.nextDouble();
                sum += x;
                m++; // m++
                System.out.println("现在输入的是第" + m + "个数据,和为" + sum + "~");
    
            }
            System.out.println(m + "个数的和为: " + sum + "  平均数为: " + (sum / m));
    
    
            scanner.close();
    
    
        }
    

2、顺序结构

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

3、选择结构

if 选择结构
  • if 单选择结构
    • if
  • if 双选择结构
    • if else
  • if 多选择结构
    • if else if if else if
  • 嵌套的 if 语句
Switch多选择结构

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

//case 穿透  匹配一个具体的值
char grade = 'A';

switch (grade){
    case 'A':
        System.out.println("优秀");
        break;      //可选   记得加上跳出

    case 'B':
        System.out.println("良好");
        break;

    default:
        System.out.println("Unknow");
  • 从JAVA 7 开始的新特性,表达式结果可以是字符串
    • 字符是本质还是数字
  • 反编译 Java ----- Class (字节码文件) ----反编译(IDEA)
    • 查看反编译的class 文件 移动到idea查看

4、循环结构

  • While 循环

    • while(布尔表达式){
          //循环内容
      }
      

循环条件一直true 就会造成无限循环,我们正常业务中应该是要避免死循环

  • do … while 循环

    • do … while 循环至少会执行一次

    • do {
          // 代码语句
      }while(布尔表达式);
      
  • for 循环

    for(初始化;布尔表达式;更新){
     //代码语句   
    }
    
    100.for 快速写出
    
// 0 到 100 之间 奇数和偶数的和
int qisum = 0;
int ousum = 0;
for (int i = 0; i <= 100; i++) {
    if (i%2!=0){    //判断奇数
        ousum += i;
    }else {         //偶数
        qisum +=i;
    }

}
System.out.println("偶数的和为: " + ousum);
System.out.println("奇数的和为: " + qisum);
// 输出1~1000之间5的倍数,每行三个输出
for (int i = 1; i <= 1000; i++) {
    if (i%5==0){
        System.out.print(i + "\t");
    }
    if (i%(5*3)==0){    //换行 控制
        System.out.println();
    }
}

//println 输出后换行
//print 输出后不换行
//1.打印第一列
//2.固定的 1 再次循环抱起来
//3.去掉重复的 j<=i
//4.调整样式
for (int i = 1; i <= 9; i++) {
    for (int j = 1; j <=i; j++) {
        System.out.print(i+"*"+j+"="+(i*j)+"\t");
    }
    System.out.println();
}
  • JAVA5 引入的一种用于数组的增强型for 循环

    for(声明语句 : 表达式){
        //代码句子
    }
    
    int [] numbers = {10,11,12,13};  //定义了一个数组
    for (int x : numbers){
        System.out.println(x);
    }
    

5、break & continue

  • break 用于强行退出整个循环,不执行循环中的剩余的语句
  • continue 语句在循环语句体中,用于终止某次循环过程,跳过循环中尚未执行的语句,进行下一次是否执行循环的判定

6、练习

//打印正三角形        分步思想 问题一步一步的分开解决
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();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值