Java day02——逻辑控制&循环

逻辑控制语句

条件分支结构

if … else

例:用户自己输入:商品单价、和商品数量
输入:实付金额6
如果:应付金额>500,打8折
判断实付金额够不够
输出:找零金额

Scanner console = new Scanner(System.in);
        System.out.println("请输入商品单价:");
        int price = console.nextInt();
        System.out.println("请输入商品数量:");
        int count = console.nextInt();
        System.out.println("请输入实付金额:");
        double money = console.nextInt();
        // 应付金额
        double sum = price * count;
        if (sum >= 500) {
            // 打8折
            sum = sum * 0.8;
        }

        if (money >= sum) {
            System.out.println("找零:" + (money - sum));
        } else {
            System.out.println("钱不够");
        }

switch() - case

仅适用于判断是否相等的情况
括号内条件数据类型可选int\char\short\byte
JDK1.7之后,也支持字符串 String “” ;

switch (month) {
           // case 后接的是要对比的值
           // case 是具有穿透性的,除非遇到break;例如下面的,假如去掉所有break,将会输出 所有sout
           case 1:
           case 3:
           case 5:
           case 7:
           case 8:
           case 10:
           case 12:
               System.out.println(month + "月,一共有31天");
               break;
           case 4:
           case 6:
           case 9:
           case 11:
               System.out.println(month + "月,一共有30天");
               break;
           case 2:
               System.out.println(month + "月,一共有28天");
               break;
           default:
               System.out.println(month + "月不存在");
               break;
       }

循环结构

for循环

int i = 1; // 循环的初始值 - 位置可以在for外面
      // i <= 100 循环的条件,可以不写,不写就是死循环
      // i++ 步长, 变化规律
      for (i = 1; i <= 10; i++) {
          // for循环体
          sum += i;
      }
      // 死循环后继续写代码会报错
      System.out.println("循环结束, i的值: " + i);
      System.out.println("循环结束, sum的值: " + sum);

兔子问题

有一对兔子,从第3个月开始,每个月再生一对兔子,每个月有多少只兔子
规律:1 1 2 3 5 8 11

int f1 = 1; // 上上个月
int f2 = 1; // 上个月
int sum ;
for (int i = 3; i <= 10; i++) {
// 当前这个月的总数,应该是前面两个月的数量和
sum = f1 + f2;
f1 = f2;
f2 = sum;
System.out.println("第" + i + "个月的兔子总数是:" + sum);
        }

while循环

while(条件): 当…的时候, 就…
特点: 不确定循环次数

累加问题

从1开始相加, 加到结果超过500为止

int i = 1; // 要加的数,变化的
int sum = 0; // 用来记录结果的
while(sum <= 500) {
	sum += i;
	i++;
}
System.out.println("超过500时, i是:" + i);//33
System.out.println("超过500时, sum是:" + sum);//528

猜数字游戏

猜数字v1.0
有猜数字游戏,其游戏规则为:程序内置一个 1 到 1000 之间的数字作为猜测的结果,
由用户猜测此数字。-> 控制台输入 Scanner
用户每猜测一次,由系统提示猜测结果:大了、小了或者猜对了;-> if
直到用户猜对结果,则提示游戏结束。-> 当用户没猜对,就继续猜
用户可以提前退出游戏,即,游戏过程中,如果用户录入数字0,则游戏终止。

		int m=(int)(Math.random()*100);
        System.out.println(m);
        Scanner console=new Scanner(System.in);
        System.out.println("请猜数字:");
        int n=-1;
        while(n!=m){
            n=console.nextInt();
            if (n==0){
                System.out.println("已请求退出!");
                break;
            } else if (n<m){
                System.out.println("小了");
                System.out.println("请继续猜数字:");
            }else if (n>m) {
                System.out.println("大了");
                System.out.println("请继续猜数字:");
            }else {
                System.out.println("猜对了");
            }
        }

do while循环

do-while(条件): 做… 直到…
在一定程度上,两种循环可以互相替换
特殊: 在第一次循环条件就不满足的时候

   		int a = 10;
       // 第一次条件就不满足,while一次都不循环
       while (a > 10) {
           a --;
       }
       // 第一次条件就不满足,do一定会循环一次
       do {
           a--;
       } while(a > 10);
       //a1=10,a2=9

循环嵌套

break

结束当前最近的所有循环

		for(int i = 0; i < 5; i++) {
            for(int j = 0; j < 3; j++) {
                // 结束当前最近的所有循环,不再执行j,跳到下一个i
                if (j == 1){
                    break;
                }
                System.out.println("i = " + i + ", j = " + j);
i = 0, j = 0
i = 1, j = 0
i = 2, j = 0
i = 3, j = 0
i = 4, j = 0

continue

结束当前本次循环

		for(int i = 0; i < 5; i++) {
            for(int j = 0; j < 3; j++) {
                // 结束当前本次循环
                if (j == 1) {
                    // 结束这一次循环,继续执行下一个j
                    continue;
                }
                System.out.println("i = " + i + ", j = " + j);
            }
        }
i = 0, j = 0
i = 0, j = 2
i = 1, j = 0
i = 1, j = 2

x: y:

结束外层循环可借助的变量

		x:for(int i = 0; i < 5; i++) {
            y:for(int j = 0; j < 3; j++) {
            if (j == 2) {
                    // 结束i循环-外层循环, 需要借助一个变量
                    break x;
                }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值