语句结构(if选择,switch选择,for循环,while循环(do……while循环))
语句结构
语句结构:
顺序结构: 程序以自上而下的顺序执行
选择结构: if选择 switch选择
循环结构: for循环 while循环(do..while循环)
选择结构
选择结构(if):
if语句格式1:
if(关系表达式){
语句体;
}
注意事项:
1、当语句体只有一行话的时候,大括号可以省略,建议永远不要省略大括号
2、小括号后面可以加分号,但是加了分号之后表示空语句体。
3、小括号中的结果只能是布尔类型的
public class IfDemo1 {
public static void main(String[] args) {
int a = 200;
// if(a==100){
// System.out.println("a的值是等于100的");
// }
//
// System.out.println("hello world");
if (a == 100) ;
//局部代码块
{
System.out.println("a的值是等于100的");
System.out.println("数加科技");
}
}
}
if语句格式2:满足2选1的情况(即if和else中只有一个会执行)
if(关系表达式){
语句体1;
}else{
语句体2;
}
public class IfDemo2{
public static void main(String[] aargs){
int a=200;
if(a==100){
System.out.println("yes");
}else{
System.out.println("no");
}
}
}
if语句定义格式3:
if(关系表达式1){
语句体1;
}else if(关系表达式2){
语句体2;
}else if(……){
……
}……{
}else{
}
例题
90-100 优秀
80-90 好
70-80 良
60-70 及格
60一下 不及格
import java.util.Scanner;
public class IfDemo3{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
System.out.println("请输入学生的成绩:")
int score=sc.nextInt();
//java不允许连续比较
if(score>=90 && score<=100){
System.out.println("优秀")
}else if(score>=80 && score<90){
System.out.println("好");
}else if(score>=70 && score<80){
System.out.println("良");
}else if(score>=60 && score<70){
System.out.println("及格");
}else if(score>=0 && score<60){
System.out.println("不及格");
}else {
System.out.println("您输入的分数不在范围内!");
}
}
}
选择结构(switch):
语句定义格式:
switch(表达式){
case 常量值1:
语句体1;
break;
case 常量值2:
语句体2;
break;
case 常量值3:
语句体3;
break;
…………
default:
语句体n:
break;
}
注意事项:
1.表达式的取值:byte,short,int,char
JDK5 之后可以是枚举(后面补充)
JDK 之后可以是String
2、case后面只能是常量,不能是变量
3、执行流程:
先计算表达式中的结果值,然后拿着这个值自上而下与每一个case后面的常量值进行比较,如果有匹配的值,就执行对应case中的语句体,当遇到break
结束整个switch语句。若没有case与之对应匹配的值,就会执行default语句中的语句体,当遇到break就结束整个switch语句。
4、严格按照第三步的执行流程。
5、default一定要有吗?不一定,如果有程序会更加严谨
6、default一定要写在最后一个吗?不一定,可以放在switch中的任意位置。不影响运行流程
7、break可以不写吗?可以不写,但是可能会发生switch穿透
class SwitchDemo1 {
public static void main(String[] args) {
//案例:购买饮料的案例,前提,假设带的金额正好是一瓶饮料的价格
//可乐 3 脉动 6 旺仔 5 汇源 14 椰子汁 8
Scanner sc = new Scanner(System.in);
System.out.println("请输入所带的金额:");
int money = sc.nextInt();
switch (money){
case 3:
System.out.println("购买可乐一瓶!");
break;
default:
System.out.println("没有该金额的饮料!");
break;
case 5:
System.out.println("购买旺仔一瓶!");
// break;
case 6:
System.out.println("购买脉动一瓶!");
break;
case 14:
System.out.println("购买汇源一瓶!");
break;
case 8:
System.out.println("购买椰子汁一瓶!");
break;
}
}
}
例题
/*
模拟做单项选择题,根据你的选择,给出对应的答案。(表达式是字符的情况)
*/
public class SwitchTest3 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("题目:以下哪一种是关系型数据库?()");
System.out.println("A.redis B.clickhouse C.Mysql D.hbase");
System.out.println("请输入您的选项:");
String choice = sc.next();
switch (choice){
case "A":
case "B":
case "D":
System.out.println("选择错误!");
break;
case "C":
System.out.println("选择正确!");
break;
default:
System.out.println("没有该选择!");
break;
}
}
}
运行结果

循环结构
循环结构(for循环)
for循环的语句定义格式:
for(初始化条件语句;判断条件语句;控制条件语句){
语句体;
}
注意事项:
1、初始化条件语句只会在循环开始执行一次,后续不执行
2、初始化条件语句可以提前写在for循环外面, 这样作用域在for循环外部也可以使用初始化条件语句定义的变量
3、当for循环中的语句体只有一行的时候,大括号可以省略, 建议永远不要省略大括号
4、判断条件语句能否不写?但是不写就是无条件执行,变成死循环
5、最简单的for死循环就是for(;😉
例题
package com.shujia.day03;
/*
循环10打印一个字符
*/
public class ForDemo {
public static void main(String[] args) {
int i=1;
for (i=1;i<=10;i++){
System.out.print("a");
}
}
}

例题1
package com.shujia.day03;
/*
请在控制台输出数据1-10
请在控制台输出数据10-1
求出1-10之间数据之和
求出1-100之间偶数和
求出1-100之间奇数和
求5的阶乘
*/
public class ForTest1 {
public static void main(String[] args) {
//输出1~10
for (int i=1;i<=10;i++){
System.out.println(i);
}
System.out.println("-------------------");
//输出10~1
for (int j=10;j>0;j--){
System.out.println(j);
}
System.out.println("-------------------");
//求1~10之和
int sum=0;
for (int k=1;k<=10;k++){
sum+=k;
}
System.out.println("1~10之和为:"+sum);
System.out.println("-------------------");
//求100的偶数之和与奇数之和
int ouSum=0;
int jiSum=0;
for (int x=1;x<=100;x++){
if (x%2==0){
ouSum+=x;
}else {
jiSum+=x;
}
}
System.out.println("偶数之和为:"+ouSum);
System.out.println("奇数之和为:"+jiSum);
System.out.println("-------------------");
//求5的阶乘
int chengJi=1;
for (int y=2;y<=5;y++){
chengJi*=y;
}
System.out.println("5的阶乘为:"+chengJi);
}
}

例题2
package com.shujia.day03;
/*
在控制台输出所有的”水仙花数”
统计”水仙花数”共有多少个
所谓的水仙花数是指一个三位数,其各位数字的立方和等于该数本身。
举例:153就是一个水仙花数。
153 = 1*1*1 + 5*5*5 + 3*3*3
*/
public class ForTest2 {
public static void main(String[] args) {
int count=0;
for (int i=100;i<=999;i++){
int baiWei=i/100;
int shiWei=i%100/10;
int geWei=i%10;
if ((baiWei*baiWei*baiWei+shiWei*shiWei*shiWei+geWei*geWei*geWei)==i){
System.out.println(i);
count++;
}
}
System.out.println("---------------");
System.out.println("总共出现了:"+count+"次数");
}
}

例题3
package com.shujia.day03;
public class ForTest3 {
public static void main(String[] args) {
//请输出一个4行5列的星星(*)图案。
// System.out.print("*\t");
// System.out.print("*\t");
// System.out.print("*\t");
// System.out.print("*\t");
// System.out.print("*\t");
//使用for循环改进,输出一行*
// for(int i=1;i<=5;i++){
// System.out.print("*\t");
// }
// System.out.println();
//
// for(int i=1;i<=5;i++){
// System.out.print("*\t");
// }
// System.out.println();
//
// for(int i=1;i<=5;i++){
// System.out.print("*\t");
// }
// System.out.println();
//
// for(int i=1;i<=5;i++){
// System.out.print("*\t");
// }
// System.out.println();
//使用for循环输出n行*
for (int i = 1; i <= 4; i++) { // 外层for循环控制的行数
for (int j = 1; j <= 5; j++) { // 内层for循环控制的列数
System.out.print("*\t");
}
System.out.println();
}
System.out.println("------------------------------");
/*
第1行 共1个星
第2行 共2个星
第3行 共3个星
...
第n行 共n个星
*/
for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= i; j++) {
System.out.print("*\t");
}
System.out.println();
}
System.out.println("------------------------------");
//在控制台输出九九乘法表。
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(j + "*" + i + "=" + (j * i) + "\t");
}
System.out.println();
}
}
}

循环结构(while循环)
while循环结构:
语句定义格式:
初始化条件语句;
while(判断条件语句){
循环语句体;
控制条件语句;
}
使用场景:
当明确了范围的时候,使用for循环,当不明确尤其还需要求次数的时候,优先考虑使用while循环
例题
package com.shujia.day03;
/*
8848m,我现在有一张足够大的纸张,厚度为:0.01m。
请问,我折叠多少次,就可以保证厚度不低于珠穆朗玛峰的高度?
*/
public class whileDemo {
public static void main(String[] args) {
int high=884800;
int houDu=1;
int count=0;
while (houDu<high){
houDu*=2;
count++;
}
System.out.println("共折叠:"+count+"次,厚度为:"+houDu);
}
}

循环结构(do while)
while循环语句第二种格式:do..while循环
语句定义格式:
初始化条件语句;
do{
循环体语句;
控制条件语句;
}while(判断条件语句);
do..while循环,无论条件是否满足,都会执行一次循环体内容。
package com.shujia.day03;
public class DowhileDemo {
public static void main(String[] args) {
//在控制台中输出10行hello world
for(int i=1;i<=10;i++){
System.out.println("hello world");
}
System.out.println("-------------------------");
int i=1;
while(i>10){
System.out.println("hello world");
i++;
}
System.out.println("-------------------------");
}
}

浙公网安备 33010602011771号