JAVA-流程控制
y3-JAVA-流程控制
scanner 可以获取用户的输入
基本语法
1 Scanner s = new Scanner (System.in);
Scanner类的next()与nextLine()方法是获取输入的字符串
==区别:==
next()会只接受空格符前的数据
nextLine()会接受回车前的数据,就是能够接收所有输入的数据
next()
1 2 3 4 5 Scanner scanner = new Scanner (System.in);System.out.println("请输入内容:" ); String data = scanner.next();System.out.println("你输入的内容为:" +data); scanner.close();
结果只输出空格前的
nextLine()
1 2 3 4 5 Scanner scanner = new Scanner (System.in);System.out.println("请输入内容:" ); String data = scanner.nextLine();System.out.println("你输入的内容为:" +data); scanner.close();
结果会输出完整语句
scanner.close()是用来结束使用的
进阶使用 scanner与if相结合
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 int i = 0 ;float f = 0.0f ;Scanner scanner = new Scanner (System.in);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();
都为true时:
为false时:
scanner与while结合
要求
:可以输入多个数字,并求其总和与结果,没输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 double sum = 0 ;int num = 0 ;Scanner scanner = new Scanner (System.in);System.out.println("请输入数字:" ); while (scanner.hasNextDouble()) { System.out.println("请输入数字:" ); double x = scanner.nextDouble(); sum = sum + x; num ++; } System.out.println(num+"个数的总和为:" +sum); System.out.println(num+"个数的平均值为:" +sum/num); scanner.close();
顺序结构 就是自上而下运行的一种结构
没什么可说的
选择结构 if单选择结构
1 2 3 4 int score = 90 ;if (score>=60 ){ System.out.println("及格了" ); }
if双选择结构
1 2 3 4 5 6 int score = 50 ;if (score>=60 ){ System.out.println("及格了" ); }else { System.out.println("成绩不及格" ); }
if多选择结构 1 2 3 4 5 6 7 if (布尔表达式){ }else if { }else { }
else if可以是若干个
1 2 3 4 5 6 7 8 9 10 11 12 int score = 50 ;if (score>=60 ){ System.out.println("及格了" ); } else if (score>=90 ) { System.out.println("优秀" ); } else if (score<90 && score>=60 ) { System.out.println("非常可以" ); } else if (score<60 ) { System.out.println("不及格" ); }else { System.out.println("成绩错误" ); }
嵌套的if结构 1 2 3 4 5 if (布尔表达式){ if (布尔表达式){ } }
1 2 3 4 5 6 7 8 9 10 11 int i = 25 ;if (i>0 ) { if (i == 25 ) { System.out.println("结果为" + i); } else { System.out.println("其他结果" ); } }else { System.out.println(i+"小于规定值" ); }
Switch选择结构 Swich是用来匹配的值是否相等
变量类型可以是:byte、short、int、char
1 2 3 4 5 6 7 8 switch (表达式){ case value: break ; case value: break ; default : }
==重点(关于break知识点):==
如果不加break,会发生一种case击穿。意思就是:值匹配上了,但它会将正确值以下的内容也运行
1 2 3 4 5 6 7 8 9 10 11 char grade = 'b' ; switch (grade) { case 'a' : System.out.println("a" ); case 'b' : System.out.println("b" ); case 'c' : System.out.println("c" ); default : System.out.println("成绩" ); }
不加break,显然case ‘b’一下的数据都会运行
加上break后,就可以避免case击穿的情况了
查看源码 可以使用IDEA查看
文件–>项目结构–> 查看编译器输出得出文件路径–>打开路径,一直点到对应的class文件
如想要查看这些class的源码,就需要将它拷贝到IDEA中
复制想要查看的class文件,然后到IDEA中,右键项目,选择打开于目录路径
然后到
然后将复制的class文件,复制到这个文件夹下
这时,IDEA就会出现这个class文件,打开就行
循环结构 while循环
如果布尔表达式为true则为死循环,大多数情况避免死循环, 会用一个表达式失效的方法结束循环
练习从1加到100:
1 2 3 4 5 6 7 8 9 10 int i = 0 ;int sum = 0 ;while (i<100 ){ i++; sum = sum + i; } System.out.println(sum);
do…while循环 ==与while的区别:==无论如何,do里面的语句都会运行一遍
1 2 3 4 5 6 7 8 int i = 0 ;do { i++; System.out.println(i); }while (i<0 ); System.out.println(i);
由结果可知,do里面先执行i++,这是i=1,所以第一个结果就为1,然后进行while判断,发现i并不小于0,所以不继续循环,然后执行第六行的语句,i还是等于1,可知确实没有进行循环
for循环 for循环是最有效、最灵活的循环结构,可迭代的通用结结构
练习1:计算0-100之间的奇数和偶数的和
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 int addSum = 0 ;int evenSum = 0 ;for (int i = 0 ; i <= 100 ; i++) { if (i%2 ==0 ){ evenSum +=i; }else { addSum += i; } } System.out.println("奇数和" +addSum); System.out.println("偶数和" +evenSum);
练习二:用while或for循环输出1-1000之间能被5整出的数,并且每行输出三个
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 for (int i = 0 ; i <= 1000 ; i++) { if (i%5 ==0 ){ System.out.print(i+"\t" ); } if (i%15 ==0 ){ System.out.println(); } } System.out.println("\r===========================================================" ); int num = 0 ;while (num <=1000 ){ num++; if (num%5 ==0 ){ System.out.print(num+"\t" ); } if (num%15 ==0 ) { System.out.println(); } }
关于每一行输出三个数思想:
这里想到的是判断模15是否等于0,如果等于就回车一下,因为在0-15就三个数是可以模5的,循环到15时,又可以模15,就会回车一下
练习二:打印99乘法表,用到嵌套式循环
1 2 3 4 5 6 7 8 9 10 for (int i = 1 ;i < 10 ; i++) { for (int i1 = 1 ; i1 < 10 ; i1++) { if (i>=i1){ System.out.print(i1+"*" +i+"=" +(i1*i)+"\t" ); } if (i1%9 ==0 ){ System.out.println(); } } }
练习三:打印三角形:
1 2 3 4 5 6 7 8 9 10 11 12 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 = 2 ;j<=i;j++){ System.out.print("*" ); } System.out.println(); }
增强for循环 可以简化代码,主要是用来遍历的
实例1,遍历数组:
1 2 3 4 int [] numbers = {1 ,2 ,3 ,4 };for (int x:numbers){ System.out.println(x); }
实例2:
1 2 3 4 int [] numbers = {1 ,2 ,3 ,4 ,5 };for (int i = 0 ; i < 5 ; i++) { System.out.println(numbers[i]); }
实例一与实例二的for循环表达式效果是一样的,只不过实例一是用来偷懒的
break continue break在任何循环语句的主体部分,==break用语强制退出循环==,不执行循环中的剩余语句。
1 2 3 4 5 6 7 8 9 10 int [] numbers = {1 ,2 ,3 ,4 ,5 };for (int i = 0 ; i < 5 ; i++) { System.out.println(numbers[i]); if (numbers[i]==3 ){ break ; } }
执行到number[i]等于3时,就会停止这次循环,注意是结束此次循环,还会继续运行循环外的代码
continue语句用于循环语句体中,==用于终止某次循环过程(类此跳过)==,剩下的语句会继续执行。
1 2 3 4 5 6 7 for (int i = 0 ; i < 5 ; i++) { if (i==3 ){ continue ; } System.out.print(i+"\t" ); }
i=3的时候就会跳转,也就是i=3时这个循环不执行