控制结构--java

一.顺序控制

程序从上到下逐行地执行,中间没有任何判断和跳转
public class Test{
int num1 = 12;
int num2 = num1 +2:
}

 

二.分支控制

 ①单分支

基本语法:if(条件表达式){
执行代码块;(可以有多条语句)}

public class var {
public static void main(String[] args) {
Scanner myScanner = new Scanner(System.in);
System.out.println("请输入你的年龄");
int age = myScanner.nextInt();
if (age > 18) {
System.out.println("你已经成年了");
}
}
}

 

 

 ②双分支

基本语法:if(条件表达式){
执行代码块1;}
else{
执行代码块2;}

public class var {
public static void main(String[] args) {
Scanner myScanner = new Scanner(System.in);
System.out.println("请输入你的年龄");
int age = myScanner.nextInt();
if (age > 18) {
System.out.println("你已经成年了");}
else{
System.out.println("未成年");}
}
}

 

 

public class var {
public static void main(String[] args) {
int x = 7;
int y = 4;
if (x>5){
if(y>5){
System.out.println(x+y);}
System.out.println("继续");
}else
System.out.println("x is "+x);}
}//输出继续,先判断x>5,在进入{};再判断y>5;执行了if的语句就不会执行else的语句

编写程序,盛名2个double型变量并赋值。判断第一个数大于10.0,且第2个数
小于20.0,打印两数之和:

public class var {
public static void main(String[] args) {
double x = 10.1;
double y = 19.9;
double together = x + y;
if (x > 10.0 & y < 20.0) {
System.out.println("x+y = " + together);//+(x+y)
}
}
}

定义两个变量int,判断二者的和,是否能被3又能被5整除,打印提示信息
public class var {
public static void main(String[] args) {
int x = 31;
int y = 22;
int z = x + y;
if (z % 3 == 0 && z % 5 == 0) {
System.out.println("x+y = " + z);}
else{
System.out.println("无法输出");}
}
}

 

判断一个年份是否是闰年,闰年的条件符合下面二者之一:(1)年份能被4整除
但不能被100整除;(2)能被400整除

public class var {
public static void main(String[] args) {
Scanner myScanner = new Scanner(System.in);
System.out.println("请输入年份");
int year = myScanner.nextInt();
if (year%400==0 || (year%4==0 && year%100 !=0)) {
System.out.println("这是闰年");}
else{
System.out.println("这不是闰年");}

}
}

 ③ 多分支

基本语法:if(条件表达式1){
执行代码块1;}
else if(条件表达式2){
执行代码块2;}
....
else{
执行代码块n;}

 

 

public class var {
public static void main(String[] args) {
Scanner myScanner = new Scanner(System.in);
System.out.println("请输入您的芝麻信用分");
double score = myScanner.nextDouble();
if (score >=1 && score<=100){
if (score==100) {
System.out.println("信用极好");}
else if (80<score && score<=99) {
System.out.println("信用优秀");}
else if (60<=score && score<=80) {
System.out.println("信用一般");}
else{
System.out.println("信用不及格");}}
else{System.out.println("信用分区间不对");}
}
}

 

 输出b

 ④嵌套分支

 

public class var {
public static void main(String[] args) {
Scanner myScanner = new Scanner(System.in);
System.out.println("请输入您的成绩");
double score = myScanner.nextDouble();
if (score >= 8.0) {
System.out.println("请输入您的性别");
char gender = myScanner.next().charAt(0);
if (gender == '女'){
System.out.println("请进入女子组");
}else {System.out.println("请进入男子组");}


} else {
System.out.println("你被淘汰了");
}
}
}

 

 

成人(18-60):60
儿童(<18):半价
老人(>60):1/3
淡季:
成人:40
其他:20

import java.util.Scanner;

public class var {
public static void main(String[] args) {
Scanner myScanner = new Scanner(System.in);
System.out.println("请输入月份");
int month = myScanner.nextInt();
if (month >= 4 && month <=10) {
System.out.println("请输入您的年龄");
int age = myScanner.nextInt();
if (age >= 18 && age <=60){
System.out.println("票价为60元");
}else if (age <= 18 ){System.out.println("票价为30元");
}else if (age >= 60 ){System.out.println("票价为20元");
}else{System.out.println("输入错误");}}
else if ((month < 4 && month >=1) ||(month <=12 && month >10 )){
System.out.println("请输入您的年龄");
int age = myScanner.nextInt();
if (age >= 18 && age <=60){
System.out.println("票价为40");
}else {System.out.println("票价为20");}


}
}
}

 

⑤switch分支结构

switch(){
case常量1;
语句块1;
break;
case常量2;
语句块2;
break;
default;
default语句块;
break;
}

 

 

 

 

1.请编写一个程序,该程序可以接受一个字符,比如a,b,c,d,e,f,g
2.a表示星期一,b表示星期二
3.根据用户的输入显示相依的信息。要求使用switch语句完成

import java.util.Scanner;

public class var {
public static void main(String[] args) {
Scanner myScanner = new Scanner(System.in);
System.out.println("请输入字符(a-g)");
char c1 = myScanner.next().charAt(0);
//在java中只要有值返回就是一个 表达式
switch (c1) {
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;
case 'f':
System.out.println("今天星期六");
break;
case 'g':
System.out.println("今天星期天");
break;
default:
System.out.println("无法匹配");
break;
}
}
}

switch 注意事项:

1.表达式数据类型,应和case后的常量类型一致,或可以自动转换成可以互相比较的
2.表达式中的返回值为byte,short,int,char,String,enum
3.case中的值必须是常量(具体的值),不能是变量
4.default字句是可选的,当没有匹配的case是执行;如果没有,又没有匹配任何常量,则没有输出
5.如果没写break,程序会执行到switch结尾

 


//对学生成绩大于60分的,输出“合格”。低于60分的,输出“不合格”
//(注:输入的成绩不能大于100,提示成绩/60)

public class var {
public static void main(String[] args) {
Scanner myScanner = new Scanner(System.in);
System.out.println("请输入成绩");
double score = myScanner.nextDouble();
if (score >=0 && score<=100) {
switch ((int) (score / 60)) {
case 1:
System.out.println("合格");
break;
case 0:
System.out.println("不合格");
break;
default:
System.out.println("输入的成绩不能大于100");
break;
}
}else{System.out.println("输入有误");}
}
}

 

根据用户指定月份,打印该月份所属的季节。3,4,5春季;6,7,8;9,10,11;
12,1,2

public class var {
public static void main(String[] args) {
Scanner myScanner = new Scanner(System.in);
System.out.println("请输入季节");
int season = myScanner.nextInt();
if (season >=1 && season<=12){
switch ((int)(season/3)) {
case 1:
System.out.println("春天");
break;
case 2:
System.out.println("夏天");
break;
case 3:
System.out.println("秋天");
break;
case 4:
System.out.println("冬天");
break;
case 0:
System.out.println("冬天");
break;
default:
System.out.println("输入错误");
break;
}
}else {System.out.println("输入错误");}
}
}

 

 

public class var {
public static void main(String[] args) {
Scanner myScanner = new Scanner(System.in);
System.out.println("请输入月份");
int c1 = myScanner.nextInt();
switch (c1) {
case 3:
case 4:
case 5:
System.out.println("春天");
break;
case 6:
case 7:
case 8:
System.out.println("夏天");
break;
default:
System.out.println("other");
break;
}
}

}

三.循环控制

①for的循环控制

for (int i =1; i<=10; i++){
System.out.println("输入十次");

、、

int i=1;
for (; i<=10;){
System.out.println("输入十次");
i++;}

 

int count = 3;
for (int i =0,j=0; i<count; i++,j+=2){
System.out.println("i="+i +"j=" +j);}//2,4

 

 打印1-100之间所有9的倍数的整数,统计个数及总和

public class var {
public static void main(String[] args) {
int count=100;
int sum=0;
int j=0;
for (int i =1;i<=count; i++){
if(i %9 ==0){
j++;
sum +=i;
System.out.println("i="+i);
System.out.println(sum);
System.out.println(j);}
}
}

}
public class var {
public static void main(String[] args) {
int count = 100;
int sum = 0;
int j = 0;
for (int i = 1; i <= count; i++) {
if (i % 9 == 0) {
j++;
sum += i;
System.out.println("i=" + i);}}
//System.out.println(sum);
//System.out.println(j);}
System.out.println(sum);
System.out.println(j);
}
}

 

 

public class var {
public static void main(String[] args) {
int count=5;
for (int i =0, j =5;i<=count ; i++,j--){
System.out.println("i="+i);
System.out.println("j="+j);
System.out.println(i+j);
int a=i+j;
System.out.println(i+"+"+j +"="+a);}
}
}

 

②while循环

 

 

int i =1;
while(i <= 10){
System.out.println("输出");
i++;}

打印1-100之间所有能被3整除的数

public class var {
public static void main(String[] args) {
int count = 100;
for (int i = 1; i <= count; i++) {
while (i % 3 == 0) {
System.out.println("i=" + i);
i++;}}

}
}

int i =1;
while(i <= 100){
if(i %3==0){
System.out.println("i=" + i);}
i++;}

 

打印40-200之间所有的偶数

public class var {
public static void main(String[] args) {
int count = 200;
for (int i = 40; i <= count; i++) {
while (i % 2 == 0) {
System.out.println("i=" + i);
i++;}}

}
}

 ③do..while

while--先判断再执行
do..while--先执行一遍,再判断,再执行

 

 

 

//打印1-100
public class var {
public static void main(String[] args) {
int i =1;
do{
System.out.println(i);
i++;
}while(i<=100);}

}
//打印1-100的和
public class var {
public static void main(String[] args) {
int i =1;
int sum=0;
do{
//System.out.println(sum);
sum += i;
i++;

//System.out.println(sum);
}while(i<=100);
System.out.println(sum);}

}
//统计1-200之间能被5整除但不能被3整除的个数


public class var {
public static void main(String[] args) {
int count = 200;
int j =0;
for (int i = 1; i <= count; i++) {
while (i % 5 == 0 && i%3!=0) {
System.out.println("i=" + i);
i++;
j++;}
}
System.out.println(j);

}
}

//统计1-200之间能被5整除但不能被3整除的个数

public class var {
public static void main(String[] args) {
int i = 1;
int j = 0;
do {
if (i % 5 == 0 && i % 3 != 0) {
System.out.println("i=" + i);
j++;
} i++;

} while (i <= 200);
System.out.println(j);}

}

 

//如果李三不还钱,则老韩将一直使出五连鞭,直到李三说还钱为止


public class var {
public static void main(String[] args) {
Scanner myScanner = new Scanner(System.in);
char answer = '';
answer = myScanner.next().charAt(0);
do{
System.out.println("老韩问:还钱吗?y/n");
answer = myScanner.next().charAt(0);
System.out.println("他的回答是"+answer);
}while(answer != 'y');
}

}

④多重嵌套

public class var {
public static void main(String[] args) {
for(int i =0;i<2;i++){
for(int j =0;j<3;j++){
System.out.println("i="+i+"j="+j);}
}}}
//统计3个班成绩情况,每个班有5名同学,求出各个班的平均分和所有班级的平均分
public class var {
public static void main(String[] args) {
Scanner myScanner = new Scanner(System.in);
double sum= 0;
double sum_1 = 0;
double sum_2 = 0;
double sum_3 = 0;
for (int i =1;i<=3;i ++){
for (int student = 1; student <= 5; student++) {
System.out.println("请输入成绩");
double score = myScanner.nextDouble();
sum += score;
//System.out.println(sum);
System.out.println("class_="+i+" "+" "+"student="+student+" "+"score"+score);
if (i==1){
sum_1 += score;
} else if(i==2){sum_2+=score;} else if(i==3){sum_3 +=score;}

//System.out.println("第一班的平均分为="+(sum/5.0));
}
System.out.println("第一班的平均分为="+(sum_1/5.0));
System.out.println("第二班的平均分为="+(sum_2/5.0));
System.out.println("第三班的平均分为="+(sum_3/5.0));
}
System.out.println("整体平均分为="+sum/15.0);
}
}
public class var {
public static void main(String[] args) {
Scanner myScanner = new Scanner(System.in);
double total = 0;
for (int i =1;i<=3;i ++){
double sum= 0;
for (int student = 1; student <= 5; student++) {
System.out.println("请输入成绩");
double score = myScanner.nextDouble();
sum += score;
//System.out.println(sum);
System.out.println("class_="+i+" "+" "+"student="+student+" "+"score"+score);
//System.out.println("第一班的平均分为="+(sum/5.0));
}
System.out.println("第i班的平均分为="+(sum/5.0));
total +=sum;

}
}
}
//统计三个班及格人数,每个班有五名同学
public class var {
public static void main(String[] args) {
Scanner myScanner = new Scanner(System.in);
//int j =0;
int j_1 = 0;
int j_2 = 0;
int j_3 = 0;
for (int i =1;i<=3;i ++){
for (int student = 1; student <= 5; student++) {
System.out.println("请输入成绩");
double score = myScanner.nextDouble();
//sum += score;
//System.out.println(sum);
System.out.println("class_="+i+" "+" "+"student="+student+" "+"score"+score);
if (i==1 && score>=60){
j_1++;
} else if(i==2&& score>=60){j_2++;} else if(i==3&& score>=60){j_3++;}

//System.out.println("第一班的平均分为="+(sum/5.0));
}
System.out.println("第一班的及格人数为="+j_1);
System.out.println("第二班的及格人数为="+j_2);
System.out.println("第三班的及格人数为="+j_3);
}
System.out.println("整体及格人数为="+(j_1+j_2+j_3));
}
}

//打印九九乘法表

public class var {
public static void main(String[] args) {
//Scanner myScanner = new Scanner(System.in);
//int j =0;
for (int i =1;i<=9;i ++) {
for (int j = 1; j <= 9; j++) {
System.out.println(i+"*"+j+"="+i*j);
}
}
}
}
//打印金字塔
public class var {
public static void main(String[] args) {
for (int i = 1; i <= 5; i++) {
for (int k = 1; k <= 5 - i; k++) {
System.out.print(" ");}
for (int j = 1; j <= 2 * i - 1; j++) {
System.out.print("*");
}
System.out.println("");
}
}
}
//打印空心金字塔

 

 


public class var {
public static void main(String[] args) {
for (int i = 1; i <= 5; i++) {
for (int k = 1; k <= 5 - i; k++) {
System.out.print(" ");}
for (int j = 1; j <= 2 * i - 1; j++) {
if (j==1 || j==2*i-1){
System.out.print("*");
}else {System.out.print(" ");}
}
System.out.println("");
}
}
}


四.break

for(int i=0;i<10;i++){
if(i==3){break;}
System.out.println("ok"+i);}

 

public class var {
public static void main(String[] args) {
lable1:

for (int j = 0; j < 4; j++) {
lable2:
for (int i = 0; i < 10; i++) {
if (i == 2) {
break lable1;
}
System.out.println("i=" + i);
}
}
}
}//0,1

//1-100以内的数求和,求出当和第一次大于20的当前数
public class var {
public static void main(String[] args) {
int sum = 0;
for (int i =1;i<=100;i++){
sum +=i;
System.out.println("sum="+sum);
if (sum>=20){
System.out.println("第一次大于20的当前数="+i);
break;
}

}
}
}

//实现登录验证,有3次机会,如果用户名为“lxy”,密码“666”提示登陆成功,否则提示还有几次机会

public class var {
public static void main(String[] args) {
Scanner myScanner = new Scanner(System.in);
for (int i =1;i<=3;i++){
System.out.println("请输入密码");
String password = myScanner.next();
System.out.println("请输入用户名");
String name=myScanner.next();
if ("666".equals(password) && "lxy".equals(name)){
System.out.println("登录成功");
break;
}else {System.out.println("还有"+(3-i)+"次机会");}

}
}
}

五.continue

 

//输出013456789*5
public class var {
public static void main(String[] args) {
label1:
for(int j =0;j<=4;j++){
label2:
for(int i =0;i <10;i++){
if(i==2){
continue;}
System.out.println("i="+i);}
}
}}

 

//输出01*5
public class var {
public static void main(String[] args) {
label1:
for(int j =0;j<=4;j++){
label2:
for(int i =0;i <10;i++){
if(i==2){
continue label1;}
System.out.println("i="+i);}
}
}}

六.return

跳出所在的方法,若return写在main 中,退出程序

 

public class var {
public static void main(String[] args) {

for(int i =1;i<=5;i++){
if(i==3){
System.out.println(i);
break;}
System.out.println("hello world");}
System.out.println("完结");}
}//hello world,hello world,3,完结

 

public class var {
public static void main(String[] args) {

for(int i =1;i<=5;i++){
if(i==3){
System.out.println(i);
continue;}
System.out.println("hello world");}
System.out.println("完结");}
}//hello world,hello world,3;hello world,hello world,完结

public class var {
public static void main(String[] args) {

for(int i =1;i<=5;i++){
if(i==3){
System.out.println(i);
return;}
System.out.println("hello world");}
System.out.println("完结");}
}//hello world,hello world,3

 

posted @ 2022-10-20 21:55  书包里的跳蚤  阅读(50)  评论(0)    收藏  举报