Bootstrap

入门到入土,java学习day3

流程控制语句

        通过一些语句,控制程序的执行流程

        顺序结构

java程序默认的执行流程,按照代码的先后顺序,从上到下依次执行

        分支结构

1.if语句

格式

(1)if(关系表达式){语句体;}

(2)if(关系表达式){语句体1;}else{语句体2;}

(3)if(关系表达式){语句体1;}else if(关系表达式2){语句体2;}...else{ 语句体;}

2.switch语句

格式

switch(表达式){

        case 值1:

                语句体1;

                break;

        case 值2:

                语句体2;

                break;

...

        default:

                语句体;

                break;

}

说明:

case后面跟的是要和表达式进行比较的值,是字面量而不是变量

break表示终端,跳出循环

default表示所有情况都不匹配的时候,就执行该处内容

case给出的值不允许重复

case当没有break 语句停止运行是,会出现穿透现象,会一直运行到default或者break

JDK12格式更新

switch(表达式){

        case 值1 -> 语句体1;

        case 值2 -> 语句体2;

...

        default -> 语句体;

}

        循环结构

1.for

for(初始化语句;条件判断语句;条件控制语句){循环体;}

2.while

初始化语句;

while(条件判断语句){循环体语句;条件控制语句;}

3.do...while

初始化语句;

do{循环语句;条件控制语句;}while(条件判断语句);

无限循环

循环中的判定语句恒为真

for(;;){循环体;}

while(true){循环体语句;}

do{循环语句;}while(true);

跳转控制语句

continue:跳过本次循环,继续执行下次循环

break:结束整个循环

        获取随机数

其实和Scanner函数的用法类似

1.导包

import java.util.Random;导包在类定义上面

2.创建对象,使用Random这个类

Random r = new Random();

3.生成随机数

int number = r.nexInt(随机数的范围);

这里的范围表示从0开始的多少个数,比如说15那就是0~14

算法题

今天来三道基础的算法题,主要以思路为主

1.回文数,从左往右从右往左都是一样的数字,比如说121,现在问题是判断输入的是不是回文数

        首先分析问题,了解回文数的特点有一样的数字,奇偶位数可能情况不一样,但是最重要的特点是这个数字倒过来和原本相等,因为其他条件你的判断可能不方便,但是这个就是判断是否相等就可以。另一个问题是输入的数字,位数,大小不确定,这里默认是正数。

        有一些初步的想法可能就是慢慢求每一位上数然后判断是否相等,这样就单的数字可以处理,但是当数字多了就很难处理。所以我们要采取把它倒过来的方法。

        因为是十进制,所以倒过来的操作很简单,就是用10来取余,然后乘10变到高位在循环中,每个数字乘循环数的10刚好可以倒过来。具体代码如下

 public static boolean isPalindrome(int num) {
        int originalNum = num;
        int reversedNum = 0;
        while (num > 0) {
            int digit = num % 10;
            reversedNum = reversedNum * 10 + digit;
            num /= 10;
        }
        return originalNum == reversedNum;
    }

2.求商和余数,要求不能用加乘除。

        这个就回到我们的小学教程的思维,商的本质就是减法,其实题目也暗示了,所以用循环减法,记住次数和余数就是所求。

 public static int[] divide(int dividend, int divisor) {
        int quotient = 0;
        while (dividend >= divisor) {
            dividend -= divisor;
            quotient++;
        }
        int remainder = dividend;
        return new int[]{quotient, remainder};
    }

3.求平方根,不要求精确

        也就是循环,判断大小,感觉没什么难度。

4.判断是不是质数

        质数就是只能被1和它本身整除,简单来说循环判断是否可以被整除,但是数字过大可能不好计算,而且浪费性能。可以利用刚刚的平方根,先求平方跟然后循环到平方根的次数,会大大减少。

;