关于Java中的流程控制,“Scanner Switch While If For Break Continue”关键字的使用方法

it2024-12-24  20

Java的流程控制

基础阶段 目录: 用户交互Scanner顺序结构选择结构循环结构break & continue练习题

1.Scanner对象

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

基本语法:

Scanner s = new Scanner(System.in);

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

next():

一定要读取到有效字符后才可以结束输入。//必须要输入否则程序不停止

对输入有效字符之前遇到的空白,next()方法会自动将其去掉。//Hello World 只输出Hello因为有空格

只有输入有效字符才将其后面输入的空白作为分隔符或者结束符。/’/只有程序中有空格就结束’

next()不能得到带有空格的字符串。

使用next()的例子:

package com.company.base; import java.util.Scanner; public class demo1 { public static void main(String[] args) { //创建一个扫描器对象,用于接受键盘数据 Scanner scanner = new Scanner(System.in); System.out.println("使用next方式接收:"); //判断用户有没有输入字符串 if (scanner.hasNext()){ //使用next方式接收 String str = scanner.next(); System.out.println("输出的内容为:"+str); } scanner.close(); //IO流的用完记得关掉 占用内存 IO流就是输入输出流 和电脑交换信息的 } } nextLine() 以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符。可以获得空白。 package com.company.base; import java.util.Scanner; public class demo2 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入数据"); if(scanner.hasNextLine()){ String abc = scanner.nextLine(); System.out.println("输出:"+abc); } scanner.close(); } } 判断整数与小数的scanner package com.company.base; import java.util.Scanner; public class demo4 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); //从键盘接收数据 int i = 0; float f = 0.0f; System.out.println("请输入整数:"); //如果。。。那么。。。 if (scanner.hasNextInt()){ i = scanner.nextInt(); System.out.println("整数数据:"+ i); }else { System.out.println("输入的不是整数数据"); } System.out.println("请输入小数"); if (scanner.hasNextFloat()){ f = scanner.nextFloat(); System.out.println("小数数据:"+ f); }else { System.out.println("输入的不是小数数据!"); } scanner.close(); } }

做一个简易计算器

package com.company.base; import java.util.Scanner; public class demo5 { public static void main(String[] args) { //我们可以输入多个数字,并求其总和与平均数,每一个数字用回车确认,通过输入非数字来结束输入并输出执行结果: 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"+sum); } System.out.println(m +"个数的和为"+ sum); System.out.println(m+ "个数的平均值是"+(sum / m)); scanner.close(); } }

2.顺序结构

Java的基本结构就是顺序结构,除非特别指明,负责就按照顺序一句句执行。

顺序结构是最简单的算法结构。

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

那还没搞明白 那就给下面的RUN一下你就知道了

package com.company.base; public class demo6 { public static void main(String[] args) { System.out.println("1"); System.out.println("2"); System.out.println("3"); System.out.println("4"); System.out.println("5"); System.out.println("6"); System.out.println("7"); System.out.println("8"); } }

3.选择结构(很重要的)

if单选择结构if双选择结构if多选择结构嵌套的if结构switch多选择结构 if单选择结构

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

语法:

if(布尔表达式){ //如果布尔表达式为true将执行的语句,否则跳过 } if双选择结构 需要两个判断时,就需要一个双选则结构,所以就有了if-else结构。语法: if(布尔表达式){ //如果布尔表达式的值为true }else{ //如果布尔表达式的值为false } package com.company.ifdemo; import java.util.Scanner; public class if2 { public static void main(String[] args) { //考试分数大于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("不及格"); } } } if多选择结构

我们发现刚才的代码不符合实际情况,真实的情况还可能存在ABCD,存在区间多级判断。比如90-100就是A,80-90就是B等等。在生活中很多时候我们的选择也不仅仅就只有这两个,所以我们需要一个多选择结构来处理这类问题。

if(布尔表达式1){ //如果布尔表达式1的值为true执行代码 }else if(布尔表达式2){ //如果布尔表达式2的值为true执行代码 }else if(布尔表达式3){ //如果布尔表达式3的值为true执行代码 }else{ //如果以上布尔表达式都不为true执行代码 } package com.company.ifdemo; import java.util.Scanner; public class if3 { public static void main(String[] args) { //考试分数大于60就是及格,小于60分就是不及格 Scanner scanner = new Scanner(System.in); System.out.println("请输入成绩:"); int score = scanner.nextInt(); /* if语句至多有一个else语句,else语句在所有的else if语句之后。 if语句可以有若干个else if语句,它们必须在else语句之前。 一旦其中一个else if 语句检测为true,其他的else if以及else语句都将跳过执行 */ 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("不及格好好学习吧"); } } }

嵌套的if结构

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

语法

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

4.Switch多选择结构

多选择结构还有一个实现方式就是switch case语句。switch case语句能判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。switch语句中的变量类型可以是: byte、short、int、或者char从Java SE 7 开始switch支持字符串String类型了同时case 标签必须为字符串常量或者字面量。 Switch(expression){ case value: //语句 break;//可选 case value: //语句 break;//可选 //你可以有任意数量的case语句 default//可选 //语句 }

第一个例子:

package com.company.jiaohuan; public class JH { public static void main(String[] args) { // char grade = 'A'; 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("未知等级"); } } }

第二个例子:

package com.company.jiaohuan; public class JH2 { public static void main(String[] args) { String name = "chb"; //JDK 7 新特性,表达式结果可以是字符串!!! //字符的本质还是数字!!! //反编译 java----class(字节码文件)---反编译(IDEA) switch (name){ case "RAP": System.out.println("RAP"); break; case "整活": System.out.println("整活"); default: System.out.println("妹有啊"); } } }

5.循环结构

while循环

while(布尔表达式){ //循环内容 } 只要布尔表达式为true,循环就会一直执行下去。我们大多数情况是会让循环停止下来的,我们需要一个让表达式失效的方式来结束循环。少部分情况需要循环一直执行,比如服务器的请求响应监听等。循环条件一直为true就会造成无限循环【死循环】我们正常的业务编程中应该尽量避免死循环。会影响程序性能或者造成程序卡死崩溃! package com.company.whiledemo01; public class Whiledemo1 { public static void main(String[] args) { //输出1-100 int i = 0; while (i < 5201314){ i++; System.out.println(i); } } }

计算1+2+。。+100

public class Whiledemo3{ public static void main(String[] args) { //计算1+2+。。+100 int i = 0; int sum = 0; while (i<=100){ sum = sum + i; i++; } System.out.println(sum); } }

do…while循环

对于while语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。do…while循环和while循环相似,不同的是,do…while循环至少会执行一次 do{ //代码语句 }while(布尔表达式);

使用do…while语句计算1+2+。。+100

package com.company.whiledemo01; public class dowhiledemo1 { public static void main(String[] args) { int i = 0 ; int sum = 0 ; do{ sum = sum + i; i++; }while ((i<=100)); System.out.println(sum); } } public class dowhiledemo2{ public static void main(String[] args) { int a = 0; while (a<0){ System.out.println(a); a++; } System.out.println("==========="); do{ System.out.println(a); a++; }while (a<0); }

while和do…while的区别:

while先判断后执行,dowhile是先执行后判断!DO…while总是保证循环体会被至少执行一次!这是他们的主要差别。

for循环

package com.company.Fordemo; public class for1 { public static void main(String[] args) { int a = 1;//初始化条件 while (a <= 100) {//条件判断 System.out.println(a);//循环体 a += 2;//迭代 每一次循环都会将a的值刷新 } System.out.println("while循环结束"); //初始化 条件判断 迭代 for (int i = 1; i <= 100; i++) { System.out.println("for循环结束!"); }0 } }

虽然所有循环结构都可以用while或者do…while表示,但Java提供了另一种语句----for循环,使一些循环结构变得更加简单

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

for循环执行的次数实在执行前就确定的。语法格式如下:

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

练习1:计算0到100之间奇数和偶数的和

package com.company.Fordemo; public class for2 { public static void main(String[] args) { //计算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); System.out.println("偶数的和"+evensum); } }

练习2:用while或for循环输出1-1000之间能被5整除的数,并且每行输出3个

package com.company.Fordemo; public class for3 { public static void main(String[] args) { // 用while或For循环输出1-1000之间能被5整除的数,并且每行输出3个 for(int i = 0 ; i <= 1000;i++){ if (i%5==0){ System.out.println(i+"\t"); } if (i%(5*3)==0){//每行 System.out.println("\n"); } } } }

练习3:打印九九乘法表

package com.company.Fordemo; public class for4 { public static void main(String[] args) { //先打印第一列 //我们把固定的1再用一个循环包起来 //去掉重复项,i<=j //调整样式 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(); } } }

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

for(声明语句:表达式) { //代码样式 }

声明语句:声明新的局部变量,该变量的类型必须和数据元素类型相匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。

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

package com.company.Fordemo; public class for5 { 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); } } }

6.break&continue

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

package com.company.Fordemo; public class braek1 { public static void main(String[] args) { int i = 0 ; while (i<100){ i++; System.out.println(i); if (i==30){ break;//break只是跳出循环 但不是终止程序 } } } }

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

package com.company.Fordemo; public class continue1 { public static void main(String[] args) { int i = 0; while(i<100){ i++; if (i%10==0){//不输出任何10的倍数 System.out.println(); continue; } System.out.print(i); } /* break在任何循环语句的主体部分,均可用break控制循环的流程 break用于强行退出循环,不执行循环中剩余的语句(break语句也在switch语句中使用) continue语句用于循环语句中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定 */ } }

关于goto关键字

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

多看多练习 学习好思路 记住例子 举一反三!

最新回复(0)