6、If、While、For、Switch

一、If

1、if-else

if (boolean) {
代码块
} else if (boolean) {
代码块
} else if (boolean) {
代码块
} else { // 默认情况
代码块
}

https://bbs.csdn.net/topics/603499541
IDEA单元测试控制台不能输入数据
-Deditable.java.test.console=true

@Test
public void test1() {
    if (3 >= 5) {
        System.out.println("3 < 5");
    } else {
        System.out.println("3 >= 5");
    }
}

/*
>=90   <=100      优秀
>=80    <90       良好
>=70    <80       一般
>=60    <70      及格
<60              不及格
*/
@Test
public void test2() {
    //你想表达什么意思就起成什么名字
    //int score = 9;
    //通过Scanner可以实现从控制台输入信息
    //对于<0和>100的数据,打印“这是非法输入”
    Scanner scanner = new Scanner(System.in);
    System.out.println("请输入成绩:");
    int score = scanner.nextInt();
    //卫语句1
    if (score < 0 || score > 100) {
        System.out.println("这是非法输入");
        //方法后面的代码不再执行
        return;
    }
    //卫语句2...

    //合法输入
    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 {
        System.out.println("不及格");
    }
}

java开发手册关于 ifelse的描述
在这里插入图片描述

2、三目运算符

语法:boolean ? 数1 : 数2
执行过程:计算boolean的值
若为true:则整个结果为数1
若为false:则整个结果为数2

@Test
public void test55() {
    int num1 = 13;
    int num2 = 5;
    int max = 0;
    if (num1 >= num2) {
        max = num1;
    } else {
        max = num2;
    }
    System.out.println(max);

    int max1 = num1 >= num2 ? num1 : num2;
    System.out.println(max1);
}

3、+号运算符

1、两边都是数字,则做的就是加法运算
2、若一边为字符串,则做的是字符串的拼接

@Test
public void test7() {
    int age = 28;
    //豆豆加加
    System.out.println("我的年龄是23岁");
    System.out.println("我的年龄是" + age + "岁");
    System.out.println(10 + 20 + "" + 30);//3030
    System.out.println("" + 10 + 20 + 30);//102030
}

二、While、For

1、while、for

任何复杂的程序逻辑都可以通过“顺序”、“分支”、“循环”这三种基本结构来实现。
在这里插入图片描述

循环的三要素:
1.循环条件的初始化
2.循环条件的控制
3.循环条件的改变

if (boolean) {
}
while (boolean) {
//可以反复执行
}
在这里插入图片描述

@Test
public void test1() {
    int i = 1;
    while (i <= 5) {
        System.out.println("HelloWorld");
        i++;
    }
}

@Test
public void test2() {
    for (int i = 1; i <= 5; i++) {
        System.out.println("HelloWorld");
    }
}

while、for循环主要是两类题目:
1、累加思想(1+2+3+… + 100)

//sum += i;     sum = sum + i
//sum -= i;     sum = sum - i
//sum *= i;     sum = sum * i
//sum /= i;     sum = sum / i
@Test
public void test3() {
    int sum = 0;
    for (int i = 1; i <= 100; i++) {
        System.out.println(i);
        sum += i;
        System.out.println("sum: " + sum);
    }
    System.out.println("sum: " + sum);
}

2、统计思想,数一下符合条件的有多少个(计算1-100以内7的倍数的个数)

@Test
public void test4() {
    int count = 0;
    for (int i = 1; i <= 100; i++) {
        if (i % 7 == 0) {
            System.out.println(i);
            count++;
        }
    }
    System.out.println("count: " + count);
}

2、continue、break

continue:跳出本次循环,继续下一次循环
break:跳出离他最近的那层循环

@Test
public void test44() {
    for (int i = 1; i <= 5; i++) {
        if (i == 3) {
            continue;
        }
        System.out.println(i);
    }
}

@Test
public void test45() {
    for (int i = 1; i <= 5; i++) {
        if (i == 3) {
            break;
        }
        System.out.println(i);
    }
}

@Test
public void test46() {
    //i,j,k
    for (int i = 1; i <= 5; i++) {
        System.out.println("i: " + i);
        for (int j = 1; j <= 5; j++) {
            if (j == 3) {
                break;
            }
            System.out.println("j: " + j);
        }
    }
}

例题:随机生成一个整数1-1000
用户输入一个整数,程序给出与存储的数字是“大”或者“小”,知道用户猜到这个数字位置。
如果中途用户希望程序退出,输入0可以退出。
int num = 200;
猜吧!
300
太大了
猜吧!
180
太小了
猜吧!
200
恭喜你,猜对了

//随机生成一个整数1-1000
@Test
public void test7() {
    //params  parameter:参数
    Random random = new Random();
    //the upper bound (exclusive). Must be positive.
    //exclude:排除、不包含
    //include:
    //value between zero (inclusive) and bound (exclusive)
    // [0,100) + 1
    // 1-100
    int num = random.nextInt(100) + 1;
}

3、双重for循环

1、

****
****
****

2、
*

**
***
****
*****

在这里插入图片描述

双重for循环:
1.外层循环控制行数,数一下有几行就能确定外层循环。
2.内层循环控制列数,这一行打印多少个,到底要打印多少个要找出和当前行之间的一个关系。
@Test
    public void test55() {
        //****
        for (int i = 1; i <= 4; i++) {
            System.out.print("*");
        }
        System.out.println();
        //*
        //*
        //*
        //*
        for (int i = 1; i <= 4; i++) {
            System.out.println("*");
        }
    }

    @Test
    public void test6() {
        // i=1代表打印第一行
        for (int i = 1; i <= 3; i++) {
            //i=1: 代表打印第一行
            //i=2: 代表打印第二行
            //i=3: 代表打印第三行
            for (int j = 1; j <= 4; j++) {
                //j代表这一行打印多少个
                System.out.print("*");
            }
            //打印完一行之后需要换行
            System.out.println();
        }
    }

//    *
//    **
//    ***
//    ****
//    *****
    @Test
    public void test545() {
        // i=1 j=1
        // i=2 j=2
        // i=3 j=3
        for (int i = 1; i <= 5; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }

    @Test
    public void test75() {
        for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <= i; j++) {
                //System.out.println("2*7=14");
                System.out.print(j + "*" + i + "=" + (i * j) + "\t");
            }
            System.out.println();
        }
    }

4、无限循环

1.while(true) 
2.for(  ;  ;   )

三、Switch

switch: 可以接受的值( byte short int整数类型,char,String) 不支持long

switch(2) {
    case 1:
    .....
    break;
    case 2:
    ....
    break;
    .....  
    default:
    .....
    break;
}

1.当 case 匹配时,执行该 case 下的代码,直到遇到 break 语句,或者 switch 语句的末尾。
2.如果没有 break 语句,程序会继续执行下一个 case 语句,直到遇到break或者switch语句结束为止。(这是Java switch语句的一个特性,这叫做 “fall-through” 现象)。

@Test
public void test90() {
    int num = 12;
    if (num == 1) {
        System.out.println("1");
    } else if (num == 2) {
        System.out.println("2");
    } else if (num == 3) {
        System.out.println("3");
    } else {
        System.out.println("else");
    }

    switch (num) {
        case 1:
            System.out.println("1");
            break;
        case 2:
            System.out.println("2");
            break;
        case 3:
            System.out.println("3");
            break;
        default:
            System.out.println("default");
            break;
    }
}

练习1:
输入月份判断天数:
1、3、5、7、8、10、12 -------- 31天
4、6 、9、11--------------------30天
2----------------------------------28/29天

练习2:
之前用if-else做的程序,使用switch完成:

=90 <=100 优秀
=80 <90 良好
=70 <80 一般
=60 <70 及格
<60 不及格

@Test
public void test1() {
    Scanner scanner = new Scanner(System.in);
    System.out.println("请输入月份:");
    int month = scanner.nextInt();
    switch (month) {
        case 1:
            System.out.println("31天");
            break;
        case 3:
            System.out.println("31天");
            break;
        case 4:
            System.out.println("30天");
            break;
        case 5:
            System.out.println("31天");
            break;
        case 2:
            System.out.println("请输入年份:");
            int year = scanner.nextInt();
            break;
    }
}

@Test
public void test2() {
    Scanner scanner = new Scanner(System.in);
    System.out.println("请输入月份:");
    int month = scanner.nextInt();
    switch (month) {
        case 1:
        case 3:
        case 5:
        case 7:
            System.out.println("31天");
            break;
        case 4:
        case 6:
        case 9:
        case 11:
            System.out.println("30天");
            break;
        case 2:
            System.out.println("请输入年份:");
            int year = scanner.nextInt();
            break;
        default:
            System.out.println("default");
            break;
    }
}

四、作业

1、计算某年是不是闰年:

能被4整除,但是不能被100整除 || 能被400整除
if (() || ()) {
}

  @Test
    public  void test2(){
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入月份");
        int month = scanner.nextInt();
        switch (month){
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:

                System.out.println("31天");
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                System.out.println("30天");
                break;

            case 2:
                System.out.println("请输入年份");
                int year =scanner.nextInt();
                if( (year % 400 == 0 )||( year % 100  !=0&&year % 4 ==0))
                    System.out.println("29天");
                else
                    System.out.println("28天");
                break;
        }







    }

2、从控制台输入两个数,然后分别打印这两个数,然后交换这两个数的值

在这里插入图片描述

  @Test
    public void test2(){
      int num1 = 3;
      int num2 = 5;
      int temp =num1;
      num1=num2;
      num2=temp;
        System.out.println("num1:"+num1);
        System.out.println("num2:"+num2);
    }

3、

3.1、编写一个收银台收款程序,if
定义输入----单价、数量、用户输入金额
定义输出----应收金额、找零
使用double类型变量 scanner.nextDouble();
3.2、当总价>=500时候打八折
3.3、考虑程序出现异常的情况,如:收款金额小于应收金额
若收款金额大于等于应收金额,则计算找零后输出
若收款金额小于应收金额,输出错误信息。

 @Test
    public void test3(){
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入单价:");
        double unitPrice = scanner.nextDouble();
        System.out.println("请输入数量: ");
        double count = scanner.nextDouble();
        System.out.println("请输入金额:");
        double price = scanner.nextDouble();
        double totalPrice = unitPrice * count;
        if (totalPrice >= 500) {
            //totalPrice = totalPrice * 0.8;
            totalPrice *= 0.8;
        }
        double returnPrice = price - totalPrice;
        if (returnPrice >= 0) {
            System.out.println("找零:" + returnPrice);
        } else {
            System.out.println("钱不够");
        }
    }

4、输出一下结构:

1
12
123
1234
12345

   @Test
    public void test6() {
        for (int i = 1; i <= 5; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print(j);
            }
            System.out.println();
        }
    }

5、打印正三角形和倒三角形

     *
    ***
   *****
  *******
 *********
***********
   @Test
    public void test8() {
        for (int i = 1; i <= 6; i++) {
            for (int j = 1; j <= (6 - i); j++) {
                System.out.print("-");
            }

            for (int j = 1; j <= (2 * i - 1); j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }

6、计算1-100以内所有奇数的和以及所有偶数的和,分别打印出来。

  @Test
    public void test77() {
        int oddSum = 0;
        int evenSum = 0;
        for (int i = 1; i <= 100; i++) {
            if (i % 2 == 0) {
                evenSum = evenSum + i;
            } else {
                oddSum = oddSum + i;
            }
        }
        System.out.println("奇数:" + oddSum);
        System.out.println("偶数:" + evenSum);
    }

7、用for循环输出1—1000之间能被5整除的数,且每行输出3个

  @Test
    public void test189(){
        int count = 0;
        for (int i = 1; i <= 1000; i++) {
            if (i % 5 == 0) {
                System.out.print(i + "\t");
                count++;
            }

            if (count == 3) {
                System.out.println();
                count = 0;
            }
        }
    }

8、计算9的阶乘

   //计算9的阶乘
    //9!=9*8*7*6...*3*2*1
    @Test
    public void test999() {
        int sum = 1;
        for (int i = 9; i >= 1 ; i--) {
            //System.out.println("i: " + i);
            sum = sum * i;
        }
        System.out.println("sum: " + sum);
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值