java控制流程
1.scanner对象 程序和人的交互 获取用户的输入
基本语法:
Scanner s = new Scanner(System.in)
通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们一般需要使用hasNext()与hasNextLine()判断是否还有输入的数据。
Scanner 有两个方法:next方法是等待用户输入操作
-
Scanner.next() //以空格符结束
-
Scanner.nextLine() //以回车键结束 可以收到所有的字符
//演示Scanner.nextLine()方式 Scanner scanner = new Scanner(System.in); //建立从键盘接收数据的流 System.out.println("从键盘接收数据:"); String src = scanner.nextLine();//键盘接收到的数保存到src中 System.out.println("输出的数是:"+src); scanner.close();//随手关闭键盘接收流
题目:输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果。
public class Demo03 { //输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果。 public static void main(String[] args) { int s = 0; double sum = 0.0; double ave = 0.0; Scanner scanner = new Scanner(System.in); System.out.println("请输入任意个数,以非数字结尾:"); while(scanner.hasNextDouble()){//接收下一个是小数类型的 double src =scanner.nextDouble();//接收到的数赋值给src s++; sum += src; } System.out.println("您输入有"+s+"个数,其总和为:"+ sum +"其平均数为"+(sum/s)); scanner.close(); } }
2.顺序结构
3.选择结构
3.1 if 双选择结构
if(布尔表达式){ //如果布尔表达式的值为true }else{ //如果布尔表达式的值为false }
题:考试分数大于60及格,小于60不及格
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("没有及格,别灰心,下次再来!!!"); } scanner.close();
题:公司需要收购一个软件,成功会支付100万元,失败了自己找人开发
public static void main(String[] args) { System.out.println("公司是否愿意收购软件:"); Scanner scanner = new Scanner(System.in ); String str = scanner.nextLine(); if(str.equals("true")){ //比较是字符型 System.out.println("公司成功收购了您的软件,恭喜您获得100万元"); }else{ System.out.println("很抱歉,公司决定不收购您的软件,您需要自己找人开发!"); } scanner.close();
3.2 switch多选择结构 变量类型可以是byte,short,int,char,string
switch(expression){ case value: //语句1 break; case value; //语句2 break; default; //语句 }
//case穿透 switch匹配一个具体的值 public static void main(String[] args) { char grade = 'C'; //也可以是字符串的匹配,字符的本质也是数字.每个字符多有它对应的哈希cood值 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; default: System.out.println("未知等级");
反编译: 从文件夹的层次走,.class文件丢到idea中,看生成之后的源码。
4.循环结构
4.1 while循环
while(布尔表达式){ //布尔表达式为真就执行下面程序 //循环内容 }
//题1+2+3+4+5+...+100=? public static void main(String[] args) { int i = 0,sum=0; while(i<=100){ sum+=i; i++; } System.out.println("前100个数的和为:"+sum);
4.2 do...while循环
do{ • //代码语句 }while(布尔表达式);
while和do...while的区别:
-
while先判断后执行。do...while是先执行后判断。
-
do...while总是保证循环体会被至少执行一次。
int a = 0; while(a<0){ a++; System.out.println(a); } System.out.println("----------------------------------------"); do{ System.out.println(a); a++; }while(a<0);
4.3 for循环
for(初始化;布尔表达式;更新){ //代码语句 }
练习1:计算0到100之间的奇数和偶数和 对2取余不为0,便是奇数
int oddsum = 0,evensum = 0; for (int i = 0; i < 100; i++) { if(i%2!=0){ //奇数 oddsum+=i; }else { evensum += i; } } System.out.println("奇数和为:"+ oddsum + "偶数和为:"+ evensum); //奇数和为:2500偶数和为:2450
练习2:用while或者for循环输出1-1000之间能被5整除的数,并且每行输出3个数 换行直接在它的基础上除
int sum =0; for (int i = 0; i <= 1000; i++) { if(i%5==0){ System.out.print(i+" "); } if(i%(5*3)==0){ //在5整除的情况下,每行要输出3个 System.out.println(); } }
练习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循环和while循环的区别
int a = 1;//初始化条件 while(a<=100){ //条件判断 System.out.println(a); //循环体 a+=2; //迭代 } System.out.println("while循环结束!"); //初始化条件;条件判断;迭代; for (int i = 0; i < 100; i++) { System.out.println(i); //循环体 } System.out.println("for循环结束!");
加强for循环:
int[] numbers = {10,20,30,40,50,60,70}; for(int x:numbers){//遍历数组的元素 System.out.println(x); }
5.break和continue
6.打印三角形
public class TestDemo { //打印三角形 8行 public static void main(String[] args) { for (int i = 1; i <= 8; i++) { for(int j = 8;j>=i;j--){ System.out.print(" "); } for (int j = 1; j <= i; j++) { System.out.print("*"); } for (int j = 1; j < i; j++) { System.out.print("*"); } System.out.println(); } } } //运行结果 * *** ***** ******* *********