java基础03

Java基础03

用户交互Scanner

  1. java.util.Scanner是Java5的新特性,通过Scanner获取用户的输入。

  2. 基本语法

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

    1. next
      • 一定要读取到有效字符后才可以结束输入
      • 对输入有效字符之前遇到的空白,next()会自动将其丢掉
      • 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符
      • next() 不能得到带有空格的字符串。
    //传建一个扫描器对象,用于接收键盘数据
    Scanner scanner = new Scanner(System.in);
    
    System.out.println("使用next方式接收:");
    
     //判断用户有没有输入字符串
    if(scanner.hasNext()){
    	String str = scanner.next(); //程序会等待用户输入完毕
    	System.out.println("输入的内容为:" + str);
    }
    
     //凡是属于IO流的类,用完就关掉,如果不关闭会一直占用资源。
    scanner.close();
    
    1. nextLine()

      • 以Enter为结束符,也就是说nextLine()方法返回的是输入之前的所有字符
      • 可以获得空白
        //从键盘接收数据
      Scanner scanner = new Scanner(System.in);
      System.out.println("使用nextLine方式接收:");
      
      //判断是否还有输入
      if(scanner.hasNextLine()){
      	String str = scanner.nextLine();
      	System.out.println("输出的内容为:" + str);
      }
      
      scanner.close();
      
    2. 拓展题
      我们可以输入多个数字,并求其总和,每输入一个数字用回车确认,通过非数字来结束输入并输出执行结果

      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);
      

顺序结构

  1. java的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句执行

  2. 顺序结构是最简单的算法结构

    image-20210512161817033

  3. 语句与语句之间,是按照从上到下的顺序进行的,它是由若干个执行的处理步骤组成的,他是任何一个算法都离不开的一种基本算法结构

选择结构

if单选择结构

  1. 我们有时候需要判断一个东西是否可行,然后我们才去执行,这样一个过程在程序中用if语句来表示

  2. 语法

    if(布尔表达式){
        //如果布尔表达式为true,将执行的语句
    }
    
  3. 举例

    Scanner scanner = new Scanner(System.in);
    
    System.out.println("请输入内容:");
    String s=scanner.nextLine();
    
     //equals:判断字符串是否相等
    if(s.equals("hello")){
    	System.out.println(s);
    }
    
    System.out.println("end");
    scanner.close();
    

if双选择结构

  1. 我们有时候需要判断一个东西是否可行,用一个if搞不定了,我们需要有两个判断,需要双选择结构,所以就有了if-else结构

  2. 语法

    if(布尔表达式){
        //如果布尔表达式为true,将执行的语句
    }else{
        //如果布尔表达式为false,将执行的语句
    }
    
  3. 举例

    //考试分数大于60就是及格,小于60就是不及格
    Scanner scanner = new Scanner(System.in);
    
    System.out.println("请输入成绩:");
    int score = scanner.nextInt();
    
    if(score>60){
    	System.out.println("及格");
    }else{
    	System.out.println("不及格");
    }
    scanner.close();
    

if多选择结构

  1. 我们有时候需要判断一个东西是否可行,在生活中我们很多时候的选择也不仅仅只有两个,所以我们需要一个多选择结构来处理这类问题

  2. 语法

    if(布尔表达式 1){
        //如果布尔表达式1的值为true,将执行的语句
    }else if(布尔表达式 2){
        //如果布尔表达式2的值为true,将执行的语句
    }else if(布尔表达式 3){
        //如果布尔表达式3的值为true,将执行的语句
    }
    ......
     else{
         //如果以上布尔表达式都不为true执行代码
        }
    
  3. 举例

    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("A级");
    }else if(score<90 && score>=80){
    	System.out.println("B级");
    }else if(score<80 && score>=70){
    	System.out.println("C级");
    }else if(score<70 && score>=60){
    	System.out.println("D级");
    }else if(score<60 && score>=0){
    	System.out.println("不及格");
    }else{
    	System.out.println("成绩不合法");
    }
    
    scanner.close();
    
  4. 注意:

    • if语句至多有一个elseyuju ,else语句在所有的else if语句之后
    • if语句可以有若干个else if语句,它们必须在else语句之前
    • 一旦一个else if语句检测为true,其他的else if 以及else 语句都将跳过执行

嵌套的if结构

  1. 使用嵌套的if...else语句是合法的。在另一个if或者else if中使用if或者else if语句。你可以像if语句一样嵌套else if...else

  2. 语法

    if(布尔表达式 1){
        //如果布尔表达式1的值为true,将执行的语句
        if(布尔表达式 2){
        //如果布尔表达式2的值为true,将执行的语句
    	}
    }
    

switch多选择结构

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

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

    1. byte、short、int、char

    2. 从Java SE7 开始 switch支持字符串String类型

             //JDK的新特性,表达式结果可以是字符串
              //字符的本质还是数字
              //反编译  java--->class(字节码文件)---->反编译
              String name = "中国";
              switch (name){
                  case "中国" :
                      System.out.println("中国");
                      break;
                  case "美国" :
                      System.out.println("美国");
                      break;
                  default:
                      System.out.println("什么?");
        	 }
      
    3. case标签必须为字符串常量或字面量

  3. 语句

    switch (expression){
        case value:
            //语句
            break;//可选
        case value:
              //语句
            break;//可选
        .......
        //可以有任意数量的case语句
            default://可选
            //语句
    }
    
  4. 举例

        char grade = 'C';

        //case穿透
        //switch 匹配一个具体的值
        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;
            case 'E':
                System.out.println("不及格");
                break;
            default:
                System.out.println("未知");
		}

循环结构

while循环

1.while是最基本的循环,结构为

while( 布尔表达式){
    //循环内容
}
  1. 只要布尔表达式为true,循环就会一直执行下去
        //死循环
        while(true){
            //等待客户端连接
            //定时检查
            //............
        }
  1. 我们大多数情况是会让循环停止下来的,我们需要一个让表达式失效的方式来结束循环
  2. 少部分情况需要循环一直执行,比如服务器的请求响应监听等
  3. 循环条件一直为true就会造成无限循环(死循环),我们正常的业务编程中应该尽量避免死循环,会影响性能或者造成程序卡死崩溃!
  4. 举例1
        int i = 0;
        while(i < 100){
            i++;
            System.out.println(i);
        }

​ 举例2

        //计算1+2+3+.....+100 = ?
        int i = 0;
        int sum = 0;

        while(i<=100){
            sum = sum +i;
            i++;
        }
        System.out.println(sum); //5050

do...while 循环

  1. 对于while语句而言,如果不满足条件,则不能进入循环,但是有时候我们需要即使不满足条件,也至少执行一次
  2. 语句
do {
    //代码语句
}while(布尔表达式);
  1. While 和do...While的区别:
    • while先判断后执行,do...while是先执行后判断
    • do..while总是保证循环体会被至少执行一次 (这是他们的主要差别)

for循环

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

  2. for循环执行次数是在执行前就确定的,语法格式如下

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

            int a = 1;//初始化条件
    
            while(a<=100){//条件判断
                System.out.println(a);//循环体
                a += 2; //迭代
            }
            System.out.println("while循环结束");
    
            //初始化值;条件判断;迭代
            for(int i = 1; i <= 100; i++){
                System.out.println(i);
            }
            System.out.println("for循环结束");
            for (int i = 0; i < 100; i++) {
                
            }
    
    
  4. 说明

    1. 最先执行初始化步骤,可以声明一种类型,但初始化一个或多个循环控制变量,也可以是空语句。

    2. 检测布尔表达式的值,如果为true,循环体被执行。如果为false,循环终止,开始执行循环体后面的语句

    3. 执行一次循环后,更新循环控制变量(迭代因子控制循环变量的增减),再次检测布尔表达式,循环执行上面的过程

      //死循环 
      for( ; ; ){
                
      }
      
  5. 练习1

            //练习1:计算0-100之间的奇数和偶数的和
            int oddSum = 0;
            int evenSum = 0;
    
            for (int i = 0; i <= 100; i++) {
                if(i % 2 !=0){
                    oddSum += i;
                }else{
                    evenSum += i;
                }
            }
            System.out.println("奇数的和:" + oddSum); //奇数的和:2500
            System.out.println("偶数的和:" + evenSum); //偶数的和:2550
    
    

    ​ 练习2

           //练习2: 输出一个1-1000之间能被5整除的数,且每行输出3个
            for (int i = 0; i <= 1000; 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

    //九九乘法表
    	 for (int j = 0; j <= 9; j++) {
                for (int i = 0; i <= j; i++) {
                    System.out.print(j + "*" + i + "=" + (j*i) + "\t") ;
                }
                System.out.println();
            }
    /*
    0*0=0
    1*0=0	1*1=1
    2*0=0	2*1=2	2*2=4
    3*0=0	3*1=3	3*2=6	3*3=9
    4*0=0	4*1=4	4*2=8	4*3=12	4*4=16
    5*0=0	5*1=5	5*2=10	5*3=15	5*4=20	5*5=25
    6*0=0	6*1=6	6*2=12	6*3=18	6*4=24	6*5=30	6*6=36
    7*0=0	7*1=7	7*2=14	7*3=21	7*4=28	7*5=35	7*6=42	7*7=49
    8*0=0	8*1=8	8*2=16	8*3=24	8*4=32	8*5=40	8*6=48	8*7=56	8*8=64
    9*0=0	9*1=9	9*2=18	9*3=27	9*4=36	9*5=45	9*6=54	9*7=63	9*8=72	9*9=81
     */
    

在java5中引入了一种主要用于数组的增强型for循环

  1. 语法格式如下:

    for(声明语句 : 表达式){
        //代码句子
    }
    
  2. 声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等

  3. 表达式:表达式是要访问的数组名,或者返回值为数组的方法

break & continue

  1. break在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句(也在switch语句中使用)

            int i = 0;
            while(i<100){
                i++;
                System.out.println(i);
                if(i==30){
                    break;
                }
            }
            System.out.println("123");
    
  2. continue语句用在循环语句中,用于终止某次循环过程,即跳出循环体中尚未执行的语句,接着进行下一次是否执行循环的判断。

            int i = 0 ;
            while(i< 100){
                i++;
                if(i%10==0){
                    System.out.println();
                    continue;
                }
                System.out.print(i);
                    /*
                    123456789
                    111213141516171819
                    212223242526272829
                    313233343536373839
                    414243444546474849
                    515253545556575859
                    616263646566676869
                    717273747576777879
                    818283848586878889
                    919293949596979899
                    */
    
  3. 关于goto关键字

    image-20210513100641429

            //打印101-150之间所有质数
            //质数是指在大于1的自然数中,除了1和他本身以外不再有其他因数的自然数
            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 + "   ");//101   103   107   109   113   127   131   137   139   149
            }
    

练习:打印三角形

        //打印三角形
        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();
        }
                /*
                     *
                    ***
                   *****
                  *******
                 *********

                 */
posted @ 2021-05-12 17:30  Zoya_B  阅读(112)  评论(0)    收藏  举报