2020年java流程控制课堂笔记

java流程控制课堂笔记

1. 用户交互Scanner

Scanner对象

  • java.util.Scanner包中Scanner类获取用户的输入

  • 基本语法:

    Scanner scanner = new Scanner(System.in);

  • 通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们一般需要 使用hasNext()与hasNextLine()判断是否还有输入的数据

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

实例代码

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()){
            String str = scanner.next();                     //输入:123 123 123
            System.out.println(str);}      
        //输出:123

        //凡是io流的类如果不关闭会一直占用资源,要养成好习惯,用完就关掉
        scanner.close();
    }
}
import java.util.Scanner;

public class Test{
    public static void main(String[] args){
        //创建一个扫描器对象,用于接收键盘数据
        Scanner scanner = new Scanner(System.in);
        System.out.println("使用nextLine方式接收:");

        //判断用户有没有输入字符串
        if(scanner.hasNextLine()){
            String str = scanner.nextLine();   //输入:1234 1234 12
            System.out.println(str);}      //输出:1234 1234 12

        //凡是io流的类如果不关闭会一直占用资源,要养成好习惯,用完就关掉
        scanner.close();
    }
}

2.Scanner进阶

实例代码

import java.util.Scanner;

public class Test{
    public static void main(String[] args){
        /*需求:输入多个数字,并求其总和与平均值,
        每输入一个数据,通过输入非数字来结束输入并输出结果*/
        Scanner scanner = new Scanner(System.in);
        int i = 0;
        double sum = 0;

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

        while(scanner.hasNextDouble()){
            double d = scanner.nextDouble();
            i++;
            sum = sum + d;
            System.out.println("当前输入第"+i+"个数据,数据的和为"+sum);
        }

        System.out.println(i+"个数的和为"+sum);
        System.out.println(i+"个数的平均值为"+(sum/i));

        scanner.close();
    }
}

3. java三种算法结构

顺序结构

java的基本算法结构

选择结构

  • if单选择结构
if(布尔表达式){  
//布尔表达式为true时执行的语句  
}
  • if双选择结构
if(布尔表达式){
  //布尔表达式为true时执行的语句
}else{
  //布尔表达式为false时执行的语句
}
  • if多选择结构
if(布尔表达式1){
  //布尔表达式1为true时执行的语句
}else if(布尔表达式2){
  //布尔表达式2为true时执行的语句
}else if(布尔表达式3){
  //布尔表达式3为true时执行的语句
}else{
  //如果以上布尔表达式都不为true时执行代码
}

实例代码

import java.util.Scanner;

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

        System.out.println("请输入成绩:");
        int score = scanner.nextInt();
        if(score == 100){
            System.out.println("恭喜满分");
        }else if(score < 100 && score >= 90){
            System.out.println("优秀");
        }else if(score < 90 && score >= 80){
            System.out.println("良好");
        }else if(score < 80 && score >= 60){
            System.out.println("及格");
        }else if(score < 60 && score >= 0){
            System.out.println("不及格");
        }else{
            System.out.println("输入成绩不合法");
        }
        scanner.close();
    }
}
  • 嵌套if结构
if(布尔表达式1){
  //如果布尔表达式1的值为true执行代码
  if(布尔表达式2){
  //如果布尔表达式2的值为true执行代码
  }
}
  • switch多选择结构
switch(expression){
   case value1:
   //语句
   break;//可选
   case value2:
   //语句
   break;//可选
   //...可以有任意数量的case语句
   default://可选
   //语句
}

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

  1. byte、short、int或者char
  2. 从jdk7开始,switch支持字符串String 类型了
  3. case 标签必须为字符串常量或字面量
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;
           case 'D':
               System.out.println("不及格");
               break;
           default:
               System.out.println("未知等级");
       }
    }
}

用IDEA实现反编译:将Test.class文件复制粘贴到Test.java所在的包中

循环结构

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

注意点:只要布尔表达式为true,循环就会一直执行下去,形成死循环

实例代码

/*需求:计算1~100的和*/
public class Test{
    public static void main(String[] args) {
      int i = 1;
      int sum = 0;
      while(i <= 100){
          sum = sum + i;
          i++;
      }
        System.out.println("和为"+sum);  //和为5050
    }
}
  • do…while循环
do{
   //代码语句
}while(布尔表达式);

while 和 do-while 的区别:

​ 1. while先判断后执行,dowhile是先执行后判断
2. do…while总是保证循环体会至少执行一次

实例代码

/*需求:计算1~100的和*/
public class Test{
    public static void main(String[] args) {
      int i = 1;
      int sum = 0;
      do{
         sum = sum + i;
         i++;
      }while(i <= 100);
        System.out.println("和为"+sum);  //和为5050
    }
}
  • for循环

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

for(初始化;布尔表达式;更新){
    //代码语句
}

实例代码1

/*需求:分别计算1~100的奇数和与偶数和*/
public class Test{
    public static void main(String[] args) {

        int oddsum = 0;
        int evensum = 0;
        for (int i = 0; i <= 100; i++) {
            if(i%2==1){
                oddsum += i;
            }else{
                evensum += i;
            }
        }
      
        System.out.println("奇数的和为"+oddsum);  //奇数的和为2500
        System.out.println("偶数的和是"+evensum); //偶数的和是2550
    }
}

实例代码2

/*需求:九九乘法表*/
public class Test{
    public static void main(String[] args) {
        for (int i = 1; i < 10; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print(i+"*"+j+"="+i*j+"\t");
            }
            System.out.println();
        }
    }
}
  • 在java5中引进一种主要用于数组的增强型for循环
for(声明语句:表达式){
   //代码句子 
}

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

实例代码

public class Test{
    public static void main(String[] args) {
        int[] numbers = {10,20,30,40,50};//定义了一个数组

        //遍历数组的元素
        for (int number : numbers) {
            System.out.println(number);
        }
    }
}

4.break、continue

break用法

  • 在任何循环语句的主体部分,均可用break控制循环的流程
  • 用于强行退出循环,不执行循环中剩余的语句

continue用法

  • 语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定

5.打印三角形及Debug

实例代码

public class Test{
    /*打印三角形*/
    public static void main(String[] args) {
        for (int i = 0; i <= 5; i++) {
            for(int j = 5; j >= i; j--){
                System.out.print(" ");
            }
            for(int j = 0; j <= i; j++){
                System.out.print("*");
            }
            for(int j = 1; j <= i; j++){
                System.out.print("*");
            }
            System.out.println();
        }
    }
}
  • Debug:调试,可以对缩写代码程序一步一步执行 ,后期详解
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章