Java流程控制
scanner
接受用户的输入,I/O流中的input部分;(它是一种输入流,就像一个水龙头,有个开关)
next():
nextLine():
大致步骤:
1、 打开开关,定义scanner对象,System.in
2、 是否有输入的内容(抛出异常)
是:scanner接受输入的内容
否:不做任何操作
3、 关闭开关,close
顺序结构:
即“一条道走到黑”,只要你不说停,就不停;也可以理解为不会脑筋急转弯。
选择结构:
if单选择:
单个判断(给个痛快话)
案例:
import java.util.Scanner;
public class IfDemo01 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.printf("请输入内容:");
String s = scanner.nextLine();
//
if (s.equals("Hello")) {
System.out.println(s);
}
System.out.printf("END");
}
}
if双选择:
即不是“任人宰割”,而是有“plan B”方案。
案例:
import java.util.Scanner;
public class IfDemo02 {
public static void main(String[] args) {
//成绩大于等于60为及格,否则不及格
Scanner scanner = new Scanner(System.in);
System.out.println("请输入成绩:");
float score = scanner.nextInt();
if (score>=60) {
System.out.println("及格");
}else {
System.out.println("不及格");
}
}
}
if多选择:
∥考试分数大于60就是及格,小于60分就不及格。
Scanner scanner=new Scanner(System.in);
System.out.println("请输入成绩:");
int score=scanner.nextInt();
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.printin("C级");
}else if(score<70&&score>=60){
System.out.println("D级");
}else if(score<60&&score>=0){
System.out.println(“不及格");
}else{
System.out.println("成绩不合法");
scanner.close();
“弱水三千,只取一瓢”;只走一条路线。
if嵌套:
“环环相扣”;可以在之后的二分查找中得到应用。
switch多选择:
switch(expression){
case value:
//语句
break;//可选
case value:
//语句
break;//可选
//你可以有任意数量的case语句
default: //可选
//语句
break:跳出,不然之后的case都会输出;是针对case穿透现象的。
default:是默认的,在case中找不到对应的。
从Java SE7开始,switch 支持字符串 String类型了
但是switch中的string类型的本质,还是数字(此处的数字是哈希code)
String country ="CHINA";
country = country.toLowerCase();
switch(country){
case "china":
System.out.println("No1.China");
break;
case "japan":
System.out.print1n("No2.Japan");
break;
case "american":
System.out.println("Wo3.American");
break;
default:
System.out.println("奥运金牌榜中不是前3!");
哈希格式:
String country ="CHINA";
country = country.toLowerCase();
byte var3=-1;
switch(country. hashCode()){
case -1792383968:
if(country.equals("american")){
var3=2;
}
break;
case 94631255:
if(country.equals("china")){
var3=0;
}
break;
case 100893702:
循环结构:
while循环:
// while是最基本的循环,它的结构为:
while( 布尔表达式 ){
// 循环内容
我们需要考虑的重点:让条件失效的边界点;
do…while循环:
do{
// 代码语句
}while(布尔表达式);
“先上车后补票”;不管符不符合条件,都得先执行一次。
for循环:
for其实是把while中的一些迭代语句放到条件中了。
int a=1; //胡始化条件
while(a<=100){ //条件判断
System.out.println(a); //循环体
a+=2; //送代
}
System.out.printin("while循环结束!");
//初始化//条件判断//迭代
for(int i=1;i<=100;i++){
System.out.println(i);
System.out.println("for循环结束!");
//练习2:用while或for循环输出1-1000之间能被5整除的数,并且每行输出3个
for(int i=0;i<=1000;i++){
if(i%5==0){
System.out.print(i+"\t");
}
if(i%(5*3)==0){ //每行
System.out.print1n();
//System.out.print("\n");
i被5整除这简单;但若是想输出3个换行的话,在不添加新变量的前提下,i%(5*3)==0就能符合要求。
九九乘法表:
学会把问题分解;从题中观察规律,然后用编程的思维来解决问题,这才叫做学会编程。
示例:
public class ForDemo04 {
public static void main(String[] args) {
int i,j;
int sum = 0;
for (i=1; i<10; i++){
for(j=1; j<=i; j++){
sum = i * j;
System.out.format("%d * %d = %d\t",j,i,sum);
}
System.out.println();
}
}
}
增强for循环:
int[] numbers ={10,20,30,40,50}; //定义了一个数组
for (int x:numbers){
System.out.print1n(x);
}
这个很像Python中的for循环;主要是针对一些数组和集合,方便遍历它们。
break和continue:
~不只是针对switch,但凡是循环结构,都是可以使用的;
~break用于强行退出循环;
~continue用于终止某次循环,跳过这次循环;可以说,continue跳出的等级低,break跳出的等级高,一个步子迈大,一个步子迈小。