学习之Java(流程控制)

随堂笔记

Scanner对象

  1. 背景
    (为了实现程序和人的交互)java给我们提供了这样一个工具类,我们可以获取用户的输入。java.util.Scanner是java5的新特征,我们可以通过scanner类获取用户的输入。
  2. 基本语法
Scanner s = new Scanner(System.in)
  1. 通过Scanner类的next()与nextLine()方法获取输入的字符串,在获取前我们一般需要使用hasNext()与hasNextLine()判断是否还有输入的数据。
  2. Next()方式接收
package Scanner;

import java.util.Scanner;//导入了scanner的包

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

运行结果:
图片1
5.NextLine()方式接收

package Scanner;
import java.util.Scanner;

public class D2 {
    public static void main(String[] args) {
       Scanner s= new Scanner(System.in);
       System.out.println("使用nextline的方式接受");
       if(s.hasNextLine()){
           String str = s.nextLine();
           System.out.println("接受的内容:"+str);
       }
       s.close();
    }
}

运行结果:
图片2
6. Next()与NextLine()的区别

  • Next()
    1. 一定要读取到有效的字符后才可以结束输入
    2. 对输入有效字符之前遇到的空白,Next()方法将会自动将其去掉。
    3. 只有输入有效字符后才将其后面输入的空白作为分隔符或结束符。
    4. Next()不能得到到有空格的字符串。
  • NextLine()
    1. 以回车键为结束符,也就是说NextLine()返回的是输入回车之前的所有字符。
    2. 可以获得空格。
  1. 在IDEA里怎么查看Scanner等的源码:
    • 按住ctrl鼠标右键点击
    • 按住fn+f4
  2. 代码
package Scanner;

import java.util.Scanner;

public class D3 {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        int i;
        float f;
        if(s.hasNextInt())
        {
            i = s.nextInt();
            System.out.println("输出的整数:"+i);
        }
        else
            System.out.println("输入的不是整数");
        if(s.hasNextFloat()){
            f = s.nextFloat() ;
            System.out.println("输入的小数:"+f);
        }
        else System.out.println("输入的不是小数");
        s.close();
    }
}

运行结果:
图片5
9. 小练习

package Scanner;

import java.util.Scanner;

public class D4 {
    public static void main(String[] args) {
       Scanner s = new Scanner(System.in);
       float sum=0.0f;
       float avg=0.0f;
       int cnt=0;
       while(s.hasNextFloat()) {//如果输入的不是数字就会跳出循环,但是现在的我觉得没有c语言好用
           float n = s.nextFloat() ;
           sum +=n;
             cnt++;
       }
       avg=sum/cnt;
       System.out.println("和:"+sum);
       System.out.println("平均数:"+avg);
       s.close();
    }
}

运行结果:
图片6

顺序结构

  1. Java的基本结构就是顺序结构,ps:除非特别说明否则都是按照顺序一句一句执行。
  2. 顺序结构是最简单的算法结构,它是任何一个算法都离不开的一种基本算法结构。

选择结构

  1. if单选择结构
if(布尔表达式){
//如果布尔表达式为true那么执行该语句
}
  1. if双选择结构
    两者只会选择其中的一个输出
if(布尔表达式){     1
//如果布尔表达式为true那么将执行该语句
}
else{            2
//否则就将执行该语句(else括号内的)
}
  1. if多选择结构
if(布尔表达式1){        1
//如果布尔表达式1为true,那么执行语句1
}
else if(布尔表达式2){         2
//如果布尔表达式2为true,那么执行语句2
}
else if(布尔表达式3){            3
//如果布尔表达式3为true,那么将执行语句3
}
else{                       4
//以上布尔表达式都不正确,那么执行语句4
}
  1. 嵌套的if结构
if(布尔表达式1){
//如果布尔表达式1的值为true执行代码
    if(布尔表达式2){
    //如果布尔表达式2的值也为true就执行该代码
    }
}
  1. switch多选择结构
    • 多选择结构还有一个实现方式就是switch case语句。
    • switch case语句判断一个变量与一系列值中某一个值是否相等,每个值称为一个分支。
    • switch语句中的变量类型可以是:
      1. byte、short、int或者char
      2. 从java SE7开始(JDK7以后支持 switch 支持字符串String类型)
      3. 同时case标签必须为字符串常量或字面量。
switch(表达式){
      case 值:
      //语句
      break;//可选
      case 值:
      //语句
      break;//可选
      defauult ://可选
      //语句
 }

如果没有break,那么只要它匹配成功,就会将以下的东西输出。

  • 字符的本质还是数字,会生成.class文件,通过IDEA反编译,可以看到源码是啥样子。
    按图片顺序完成:点击图一的图标,将图二的地址复制在此电脑中打开,然后双击图三的包,选择打开文件,然后像图四那样,将.class文件拖入.java文件中。
    图片7
    图片8
    图片9
    图片10
    图片11

循环结构

  1. while循环
  • while(布尔表达式){ //循环内容 }
  • 只要布尔表达式为true,循环就会一直执行下去
  • 但是我们大多数情况下不会让代码一直循环,我们需要一个表达式使得循环失效,从而结束循环。
  • 少部分情况需要循环一直执行,比如服务器的请求响应监听等。
  • 循环条件一直为true就会造成死循环,尽量避免死循环,否则会影响程序性能或者造成程序卡死奔溃。
package ShunXu;

public class D4 {
    public static void main(String[] args) {
        int i=1;
        int sum=0;
        /*while(i<=10){
            sum+=i;
           ++i;
        }*/
        sum=(1+100)*100/2;
        //能用数学解就用,减少花费时间
        System.out.println(sum);
    }
}

  1. do…while循环
  • do…while即使我们不满足条件,但是至少也能执行一次
do{
//代码语句
}while(布尔表达式);
  • while是先判断后执行,do …while是先执行后判断。
  • do…while总是保证循环体会被至少执行一次。
    如下:
package ShunXu;

public class D5 {
    public static void main(String[] args) {
     /*   int i=1;
        int sum=0;
        do {
            sum += i;
            ++i;
        }while(i<=100);
        System.out.println(sum);
      */
        int a=0;
        while(a<0){
            System.out.println(a);
            a++;
        }
        System.out.println("==================================");
        do {
            System.out.println(a);
            a++;
        }while(a<0);
    }
}

  1. for循环
for(初始值;判断式;更新)
{
//代码语句
}

嵌套类型

package ShunXu;

public class D6 {
    public static void main(String[] args) {
    int c=0;
        for(int i=0;i<=1000;i++){
            if(i%5==0&&i!=0) {
                System.out.print(i + " ");
                c++;
                if (c % 3 == 0) {
                    //if(i%(5*3)==0)//表示每行三个
                    // System.out.print("\n");
                    System.out.println();//一样的换行结果
                }
            }
        }
    }
}

非嵌套类型

package ShunXu;
public class D6 {
    public static void main(String[] args) {
        for(int i=0;i<=1000;i++){
            if(i%5==0&&i!=0) {
                System.out.print(i + " ");
                }
                  if(i%(5*3)==0)//表示每行三个
                   System.out.println();//一样的换行结果

println //输出会自动换行
print //输出不换行

  1. 增强for循环
  • Java5引入了一种主要用于数组或集合的增强型for循环。
  • 格式如下:
for(声明语句:表达式){
//代码句子
}
  • 声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配,其作用域限定在循环语句块,其值与此时数组元素的值相等
  • 表达式:表达式是要访问的数组名,或者返回值为数组的方法
package ShunXu;

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

运行结构:
图片12

break、continue、goto

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

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

  3. goto

  • goto关键字很早就在程序设计语言中出现,尽管goto仍是java的一个保留字,但未在语言中得到正式使用;java没有goto,然而,在break和continue这两个关键字的身上,我们仍然能看出goto的影子-------带上break和continue。
  • “标签”是指后面跟一个冒号的标识符如:label
  • 对java来说唯一用到标签的地方是在循环语句之前。而在循环之前设置标签的唯一理由是:我们希望在其中嵌套另一个循环,由于break和continue关键字通常只中断当前的循环,但若随同标签使用,他们就会中断到存在标签的地方。
package ShunXu;

public class D9 {
    public static void main(String[] args) {

       outer: for (int i = 101; i < 150; i++) {
            for (int j = 2; j < i/2; j++) {
         //如果符合if条件的,那就跳到outer那个循环
                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、付费专栏及课程。

余额充值