Java基础之流程控制

四、流程控制

目录:用户交互Scanner、顺序结构、选择结构、循环结构、break&continue、练习

1.用户交互Scanner

之前的基本语法中并没有实现程序和人的交互,但是Java给我们提供了这样一个工具类,可以用来获取用户的输入。java.util.Scanner是JDK5的新特性,可以通过Scanner类来获取用户输入。

Scanner s = new Scanner(System.in);

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

import java.util.Scanner;
public class Demo {
  public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    System.out.println("使用next方式接收:");
    if(scanner.hasNext()) {
      String str = scanner.next();
      System.out.println("输出的内容为:"+str);
    }
    scanner.close;//凡是属于IO流的类如果不关闭就会一直占用资源,最好关闭
  }
}

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

2.Scanner进阶使用

例:输入int型的数

Scanner scanner = new Scanner(System.in);
int i = scanner.nextInt();
//判断是否还有输入的整数
scanner.hasNext();

3.顺序结构

Java的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句执行。
顺序结构是最简单的算法结构。
语句与语句之间按从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的,它是任何一个算法都离不开的一种基本算法结构。

4.if选择结构

1)if单选择结构
很多时候需要去判断一个东西是否可行,然后才行执行,这样的过程在程序中用if语句表时。

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

equals:判断字符串是否相等
2)if双选择结构

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

3)if多选择结构

if(布尔表达式1) {
  //如果布尔表达式1为true将执行的语句
}else if(布尔表达式2) {
  //如果布尔表达式2为true将执行的语句
}else {
  //如果以上布尔表达式都不为true将执行的语句
}

4)嵌套的if语法
使用嵌套的if···else语句是合法的,也就是说可以在另一个if里或者else if语句中使用if或者else if语句,可以像if语句一样嵌套else if···else。

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

5.Switch多选择结构

多选择结构还有一个实现方式就是switch case语句。
switch case语句判断一个变量与一系列值中的某个值是否相等,每个值称为一个分支。
switch case语句中的变量类型可以是:byte、short、int或者char。从JDK7开始switch支持字符串类型了。同时case标签必须为字符串常量或字面量。

switch(expression) {
  case value://语句
    break;
  case value://语句
    break;
  default://语句
}

case是穿透的,没有break;,将从匹配的case开始依次往下执行语句。
反编译

Project Structure——>查询编译后输出的路径——>把class文件拉进对应的java文件中
项目编译后输出的路径

6.While循环详解

while是最基本的循环

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

只要布尔表达式的值为true,循环就会一直执行下去。
大多数情况是会让循环停止下来的,需要一个让表达式失效的方式来结束循环。
少部分情况需要循环一直执行,比如说服务器的相应监听等。
循环条件一直为true就会造成无限循环(死循环),正常情况下应该尽量避免死循环。会影响程序性能或者造成程序卡死崩溃!

7.Dowhile循环

对于while语句而言,如果不满足条件,则不能进入循环。但有时候即使不满足条件,也至少要执行一次。
do···while循环和while循环相似,不同的是do···while循环至少会执行一次。

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

While和do-while的区别:Ⅰwhile先判断后执行,dowhile是先执行后判断
ⅡDo···while总是保证循环体会被至少执行一次,这是主要差别!

8.For循环详解

虽然所有循环结构都可以用while或者do···while表示,但Java提供了另一种语句——for循环,使一些循环结构变得更加简单。
for循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构。
for循环执行的次数是在执行前就确定的。

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

关于for循环的几点说明:最先执行初始化步骤,可以声明一种类型但可以初始化一个或多个循环控制变量,也可以是空语句。然后,检测布尔表达式的值,如果为true,循环体被执行;如果为false,循环终止,开始执行循环体后面的语句。执行一次循环后,更新循环控制变量(迭代因子控制循环变量的增减)。再次检测布尔表达式,循环执行上面的过程。
print输出完不会换行,println输出完会换行
输出完换行的两种方式:

System.out.println();
System.out.print("\n");

9.打印九九乘法表

步骤:Ⅰ先打印第一列
Ⅱ把固定的Ⅰ再用一个循环包起来
Ⅲ去掉重复项i<=j
Ⅳ调整样式

public class Demo {
  public static void main(String[] args) {
    for(int j=1;j<=9;j++) {
      for(int i=1;i<=j;i++) {
        System.out.print(j+"*"+i+"="+(j*i)+"\t");
      }
    System.out.println();
    }
  }
}

10.增强for循环

例:定义一个数组number

int[] number = {10,20,30,40,50};

遍历number数组的元素

for(int x:number) {
    System.out.println(x);
}

11.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关键字通常只中断当前循环,但若随同标签使用,它们就会中断到存在标签的地方。
例:打印101-150之间的所有的质数

public class Demo {
  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+" ");
    }
  }
}  

12.打印三角形及Debug

例:打印一个5行的三角形

public class Demo {
  public static void main(String[] args) {
    for(int i=1;i<=5;i++) {
      for(int j=5;j>=i;j--) {
        System.out.print(" ");//打印空白三角形1
      }
      for(int j=1;j<=i;j++) {
        System.out.print(" ");//打印三角形2
      }
      for(int j=1;j<i;j++) {
        System.out.print(" ");//打印三角形3
      }
    }
  }
}

思路:
思路图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值