程序结构
1.顺序结构
- Java的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句执行。
- 顺序结构是最简单的算法结构。
- 语句与语句之间,框与框之间是按从上到下的顺序进行的,它是由若干依次执行的处理步骤组成的,它是任何一个算法都离不开的基本算法结构。
System.out.println("hello1");
System.out.println("hello2");
System.out.println("hello3");
//hello1
//hello2
//hello3
2.选择结构
- if单选择结构 判断为true时执行,为false跳过
Scanner scanner = new Scanner(System.in);
System.out.println("请输入内容");
String s = scanner.nextLine();
//equals:判断字符串是否相等
if (s.equals("hello")) {
System.out.println(s);
}
System.out.println("End");
scanner.close();
- if双选择结构
//考试分数大于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();
- if多选择结构
//考试分数100满分,90~100优秀,80~90良好,60~70及格,小于60分就不及格
Scanner scanner = new Scanner(System.in);
/*
if 语句最多有1个else语句,else语句在所有else if语句之后。
if语句可以有若干个else if语句,它们必须在else语句之前。
一旦其中一个else if 语句检测为true,其他的else if以及else语句都将跳过执行
* */
System.out.println("请输入成绩:");
int score = scanner.nextInt();
if(score == 100){
System.out.println("满分");
}else if(score < 100 && score >= 90){
System.out.println("优秀");
}else if(score < 90 && 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("成绩不合法");
}
scanner.close();
- 嵌套的if结构
if(){
if(){
}
}
- switch多选择结构
- 多选择结构还有一个实现方式就是switch case语句。
- switch case语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。
//break 跳出循环
//执行case没break,将穿透到下个case,直到有break
char grade = 'A';
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;
case 'E'://可选
System.out.println("挂科");
break;
default ://可选
System.out.println("未知等级");
switch 字符串比较
String name = "楷楷";
switch (name){
case "123":
System.out.println("123");
break;
case "楷楷":
System.out.println("楷楷");
break;
default:
System.out.println("弄啥嘞");
上面的code反编译,看到用哈希值做比较,用equals
switch(name.hashCode()) {
case 48690:
if (name.equals("123")) {
var3 = 0;
}
break;
case 863968:
if (name.equals("楷楷")) {
var3 = 1;
}
}
switch(var3) {
case 0:
System.out.println("123");
break;
case 1:
System.out.println("楷楷");
break;
default:
System.out.println("弄啥嘞");
}
循环结构
- while循环 先判断后执行
当while等true时为死循环,一般用于 1.等待客户连接 2.定时检查
while (true){
//等待客户连接
//定时检查
计算1+2+3+……+100 = ?
int i = 0;
int sum = 0;
while (i<=100){
sum = sum +i;
i++;
//System.out.println(sum);
}
System.out.println(sum);//输出总和5050
- do……while循环 先执行后判断 循环体至少被执行一次。
int i = 0;
int sum = 0;
do{
sum = sum +i;
i++;
}while(i<=100);
System.out.println(sum);//5050
- for 循环
注意
1. 最先执行初始化步骤。可以声明一种类型,但可初始化一个或多个循环控制变量,也可以是空语句。
2.然后,检测布尔表达式的值。如果为true,再循环被执行,如果为false,循环终止。开始执行循环体后面的语句。
3.执行一次循环后,更新循环控制变量(迭代因子控制循环变更)
4.再次检测布尔表达式,循环执行上面的过程。
//100.for 快速生成code
//初始值//条件判断//迭代
for(int i = 1;i<100;i++){
System.out.println(i);
}
System.out.println("for循环结束");
练习1:计算0到100之间的奇数和偶数的和
int oddSum = 0;//奇数和
int evenSum = 0;//偶数和
for (int i = 0; i <= 100; i++) {
if(i%2!=0){//偶数
oddSum+=i;//oddSum = OddSum + i;
}else {//奇数
evenSum+=i;
}
}
System.out.println("奇数的和:"+oddSum);//2500
System.out.println("偶数的和:"+evenSum);//2550
练习2:用while或for循环输出1~1000之间能被5整除的数,并且每行输出3个
for (int i = 1; i <= 1000; i++) {
if (i%5==0){
System.out.print(i+"\t");
}
if (i%(5*3)==0){//每当能被15整除时候就换行
System.out.println();
}
}
//println输出完换行
//print输出完不会换行
练习3.九九乘法表
//九九乘法表
//步骤
//1.先打印第一列
//2.把固定的1再用一个循环包起来
//3.去掉重复项,i<=j
//4.调整样式
for(int j = 1;j <= 9;j++){
for (int i = 1; i <= j; i++) {
System.out.print(j+"*"+i+"="+(j*i)+"\t");
}
System.out.println();
}
增强For循环
- 声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。作用域限定在循环语块,其值与此时数组元素的值相等。
- 表达式:表达式是要访问的数组名,或者是返回值为数组的方法。
int[] numbers = {10,20,30,40,50};//定义一个数组
for (int i = 0; i < 5; i++) {
System.out.println(numbers[i]);
}
System.out.println("=================");
//遍历数组的元素
for(int x:numbers){
System.out.println(x);
}
break
在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中剩下的语句。
int i = 0;
while (i<100){//当i=30,强制退出循环
i++;
System.out.println(i);
if (i == 30){
break;
}
}
continue
在循环语句中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。
int i = 0;
while(i < 100){
i++;
if (i % 10 == 0) {
System.out.print("\n");
continue;//当i=10的倍数,跳出本次循环
}
System.out.println(i);
}
练习题 打印三角形
//打印三角形 5行
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 = 1; j < i; j++) {
System.out.print("*");
}
System.out.println();
}
//*
//***
//*****
//*******
//*********