JavaSE之流程控制

四、流程控制

目录:用户交互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
      }
    }
  }
}

思路:


思路图
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,968评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,601评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,220评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,416评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,425评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,144评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,432评论 3 401
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,088评论 0 261
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,586评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,028评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,137评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,783评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,343评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,333评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,559评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,595评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,901评论 2 345

推荐阅读更多精彩内容