Java基础(四)★流程控制
从控制台获取数据:
import java.util.Scanner;//导包语句 Scanner s = new Scanner(System.in);//输入流 double d = s.nextDouble(); // 获取小数 int i = s.nextInt(); // 获取整数 String str = s.nextLine(); // 获取一行 char c = (char)s.nextInt();
+ 字符串拼接运算
String s = “a”;
s = s + “b”; -> s = “ab”
可以利用+将两个字符串进行拼接,或者也可以利用+将任何数据与字符串进行拼接
流程控制
顺序结构
是指代码是从上倒下从左到右依次运行的
分支结构
判断结构
if(逻辑值){ 代码块; }
执行顺序:如果逻辑值为true,执行对应的代码块,反之则不执行
当if结构的代码块只有一句的时候,{}可以省略不写,但是最好写上
if(逻辑值){ Code1; } else { Code2; }
执行顺序:如果逻辑值为true,执行Code1;反之执行Code2
练习:输入三个数,获取最大值
if(逻辑值1){ Code1; } else if(逻辑值2){ Code2; }...else { Code; }
执行顺序:先执行逻辑值1,如果逻辑值1为true,执行Code1;反之执行逻辑值2,如果逻辑值2为true,执行Code2,以此类推
练习:输入一个月份,输出月份对应的季节 3-5-Spring 6-8-Summer 9-11-Autumn 12-2-Winter
选择结构
switch(选中的项){ case 选项1: 代码块; break; case 选项2: 代码块; break; …… default:代码块;break; }
选项的值只能是byte/short/char/int四种类型,JDK1.7开始,支持对String进行选择,
从JDK1.5开始,允许表达式的结果是枚举常量
练习:计算器---一个符号和两个数字 - 5 9-> 5 - 9 = -4
break关键字表示当前选项的结束,在switch语句中,如果case之后没有break,那么从匹配的case开始,依次往下执行,只有遇到了break语句或者执行switch语句的末尾才会结束
如果每个case之后都有break的话,case之间的顺序不影响最后的结果;
只要有一个或者一个以上的选项没有break,那么这时候顺序会有影响
int i = s.nextInt(); // int j ; switch(i){ case 1 : int j = 0; case 2 : j += 1; // 编译报错 可能尚未声明变量j case 3: j += 3; default : System.out.println(j); }
判断的是一个范围的时候,建议使用if-else-if结构;如果情况相对比较固定的时候,建议使用switch-case语句
循环结构
循环的三要素:定义循环变量;循环条件的控制;循环变量的改变
定义循环变量
while(判断循环变量){ 代码块; }
执行顺序:先判断逻辑值。如果逻辑值为true,执行Code,然后再次判断逻辑值,如果为true,继续循环;如果为false,循环结束
while语句中,如果代码块只有一句,{}也可以省略
练习:
1. 从控制台输入一个数字,求1-这个数字的和
2. 输出500以内8的倍数
3. 输入一个数字,输出这个数字是几位数---3463-4
4. 输入一个数字,输出各位数字之和--- 3463 - 16
5. 将一个数字转化成二进制形式显示
do{ Code; } while(逻辑值);
执行顺序:先执行Code,执行逻辑值,如果逻辑值为true,再次执行Code,如果逻辑值为false,结束循环
Code至少执行一次
for循环
普通for循环:
for(循环变量的定义; 循环条件的判断;循环变量的改变){ Code ; }
增强for循环:
循环的嵌套
循环结构中包含了其他的循环结构,形成了虚幻的嵌套。
练习:九九乘法表
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
当循环变量的改变相对比较规律的时候,建议使用for循环
当不知道循环次数的时候,建议使用while循环。
while循环,循环变量定义在循环外,循环结束之后循环变量依然可以使用;for循环的循环变量是定义在for循环里边的,循环结束之后,循环变量不能继续使用
练习:
1. 打印300以内7的倍数
2. 判断一个数是否是一个质数--一个数除了1和本身以外没有别的因数
3. 打印九九乘法表
课后练习:
用一个循环打印九九乘法表
break和continue区别
break:用于选择或者循环语句中,表示结束当前一层语句
continue:用于循环语句中,表示跳出当前循环继续下次循环
这两个关键字必须结合相应的语句使用,单独存在没有意义,因此单独存在的时候编译报错
Java中支持对循环进行标号---要求看懂即可。
System.out.print();--废话,废话不允许存在--编译报错
int i = 5;
while(true){}
System.out.println(i);--这句话编译报错---因为永远执行不到
循环支持标号形式
当需要一次性跳出多层循环的时候,可以使用标号形式。但是不推荐。降低了程序的阅读性
练习:分解质因数 90 = 2 * 3 * 3 * 5
考虑用一个循环完成