流程控制(内含scanner、if语句、switch语句、while和for循环)
用户交互Scanner
通过引用scanner类获取用户的输入,下面代码可以直接背着用
Scanner scanner = new Scanner(System.in);//获取键盘(控制台)输入的数据
灵活使用scanner的方法:
一般用的是nextLine()方法,而不是next()方法;
如果对数据类型有要求,可以使用nextInt()、nextFloat()、nextDouble()等方法
这里是next()方法
if (scanner.hasNext()){//判断有没有字String str = scanner.next(); //有字的条件为true的话就定义变量str
这里是nextLine()方法
if (scanner.hasNextLine()){String str =scanner.nextLine();//next()方法不能得到带有空格的字符串,而nextLine()方法可以
这里是nextInt()方法
if (scanner.hasNextInt()){i = scanner.nextInt();
这里是nextDouble()方法
while (scanner.hasNextDouble()){//scanner输入了有数据吗↓double x =scanner.nextDouble(); //,有就用x接收scanner收到的一行数据
Scanner实例
慢慢看注释吧
//题目:我们输入多个数字,并求其总和与品均属每每输入// 一个字母用回车确认,通过输入非数字来结束输入并输出执行结果public class Demo05 {public static void main(String[] args) {//以下是自己写的Scanner scanner = new Scanner(System.in);//获取键盘(控制台)输入的数据System.out.println("请输入数字(输入字母用回车确认即可结算总和和平均数):");double sum = 0;//总和double cs=0;//次数while (scanner.hasNextDouble()){//scanner输入了有数据吗↓double x =scanner.nextDouble(); //,有就用x接收scanner收到的一行数据sum = sum + x;//用sum累加每次输入的值cs++; //次数加1System.out.println("这次是第"+cs+"次,该次的sum为:"+sum);}//结束while循环System.out.println("计算结束,总数为:"+sum+",平均数为:"+(sum/cs));scanner.close();//记得挂掉IO流的类}}
运行结果:
顺序结构
是最简单的算法结构
任何一个算法都离不开的一种基本算法结构
选择结构
if选择结构
if单选择结构
if双选择结构
//例如if (score>=60){System.out.println("及格了");}else {System.out.println("没及格");}
if多选择结构
//例如if (score==100){System.out.println("恭喜满分");}else if (score<100&&score>=80){System.out.println("优秀的");}else if (score<80&&score>=60){System.out.println("及格了");}else if (score<60&&score>=0){System.out.println("没及格,要再加油");}else {System.out.println("请输入正确格式");}
if嵌套结构
switch多选择结构
//没啥好说 直接看代码,个人喜好请包涵switch (name){case "子仁"://case有穿透功能System.out.println("我");break;//需要break停止穿透,如果没有break,后面的”喜欢看辉夜大小姐想让我告白“会一起输出case "见青":System.out.println("喜欢看");break;case "啊":System.out.println("辉夜大小姐");break;default://除了以上三种情况外的情况执行这条指令System.out.println("想让我告白");}
需要提醒的JDK7之后switch语句才能使用String类型
其原理是将String的类型转为hashCode
(如何看到编译过的class呢)
1.先复制这里
2.把复制的路径打开,将里面的字节码文件放入到idea项目的包里面,如图
3.如何idea就会显示你能看得懂的字节码文件了,以下图片是对比图(右是字节码文件)
循环结构
while循环
//也是直接看例子吧//题目是计算1+2+...+99+100的结果int a = 0;int b = 0;while (a<=100){//注意要有结束的条件,避免死循环b=b+a;a++;System.out.println(b);}System.out.println("最终答案为"+b);
运行结果:
tips:这个是死循环
死循环也有自己的作用
do-while循环
相当于把中括号提前了并加了个do
代码例子:
While和do-While的区别:
do-While至少被执行一次while是先判断再执行,do-while是先执行再判断
for循环
for循环的快捷键
先打要进行循环的次数,再输入“.for”
死循环的原理
for循环是先初始化,再判断布尔表达式,再更新,再判断布尔表达式,再更新,知道布尔表达式不满足true停止循环
for循环实例(乘法表)
//题目1:计算0到100之间的奇数和偶数的和 int maxo= 0;int maxj= 0;for (int i = 0;i<100;i+=1){if (i%2==0){maxo+=i;}else {maxj+=i;}}System.out.println("偶数总和为"+maxo+",奇数总数为"+maxj+",总计为"+(maxj+maxo) );//题目2:用for循环输出1-1000之间能被5整除的数,并且每行输出3个for (int i = 1; i <= 1000; i++) {if (i%5==0){System.out.print(i+" ");//注意,如果是平常的System.out.println(),每个输出结构会隔一行//但System.out.print()不会换行}if (i%15==0){System.out.print("\n"); //复习一下\n是换行的意思,\t是8个空格即Tab的效果}}//题目3:打印九九乘法表for (int i = 1; i <= 9; i++) {for (int j = 1; j <= i; j++) {//乘法表的技巧是先把一列写好,在利用循环嵌套好第一个循环,最后调整格式System.out.print(i+"*"+j+"="+(i*j)+"\t");}System.out.println();}
增强for循环
用于简化数组或集合的for循环
分割线划分了两种不同的数组的写法
int[] num = {10,20,30,40,50}; //定义了一个数组for (int x: num){//增强for循环 用来简化偷懒编写数组和集合的for循环的System.out.println(x);}System.out.println("-----------");for (int i = 0;i<5;i++){//普通写法System.out.println(num[i]);}
break&continue
break用于终止循环
continue是终止正在跑的那次循环,跳过后面的东西再重新开始循环,例:
练习
//打印三角形,要把三角形拆分为三部分进行编码for (int i = 1; i <= 5; i++) {//代表三角形的五行for (int j = 5; j >= i; j--) {System.out.print(" ");//代表左边由空格组成的小三角形}for (int u = 1; u <= i; u++) {//代表左边由星号组成的小三角形System.out.print("*");}for (int k = 1; k < i; k++) {//代表右边由星号组成的小三角形System.out.print("*");}System.out.println(); //每一行后记得换行,也能用\n代替}
效果图:
如果不理解其中的运行的过程
左击边框直到出现红点点
点debug
点此图标代表下一步
心得:for循环嵌套理解可能会困难,但需要练习直到完全能自主编写出效果才行