2022-07-14 第二小组 张宁杰 Java基础(2)

今日重点

引用数据类型(String)、如何使用if...else语句、如何定义数组、如何使用循环、break和continue的使用

学习心得

今日的Java SE课程难度提高了,通过今天的学习,我掌握了如何使用for循环、break和continue的使用方法,通过计算器案例我学会了如何根据一个项目的需求和逻辑书写代码

学习内容

1.引用数据类型

除了基本数据类型,其他都是引用数据类型。String类也是一种引用数据类型,Java中的字符串只能用双引号,没有范围。

        String s1 = "String";
        System.out.println(s1);
        //练习使用字符串拼接
        System.out.println("早上好!" + s1 + "!");

2.Java的键盘输入

包的命名规则:

1.尽量使用全小写
2.包名当中尽量不要出现_&123
3.一般情况下,使用站点名的逆序
www.baidu.com-->com.xxx.模块名(com.baidu.controller(架构名).功能)
"."代表一级
1.png

如何通过键盘输入?

    Scanner in  = new Scanner(System.in);
        //开始输入
        String s = in.next();
        System.out.println("你输入了:" + s);

案例分析

需求:

  1. 如果第一个数是8,并且第二个是9,就打印两数和
  2. 如果其中一个是8,另一个是9,就打印两数差
  3. 如果两个数中既没有8也没有9,就分别打印两个数
  4. 多重if:每个if之间没有联系,这些if有可能都执行
 Scanner s1 = new Scanner(System.in);
         int i1 = s1.nextInt();
         int i2 = s1.nextInt();
        if (i1 == 8 && i2 == 9){
            System.out.println("和是:" + (i1 + i2));
        }else if(i1 == 8 || i2 == 8 || i1 ==9 || i2 ==9){
            System.out.println("差是:" + (i1 - i2));
        }else if(i1 != 8 && i2 != 8 && i1 !=9 && i2 !=9){
            System.out.println(i1);
            System.out.println(i2);
        }

if...else...和if...else

if...else...都有互斥的功能,一套结构中就至多走一个;要注意条件的顺序!!!
int a = 10; if(a > -2){ xxxxx }else if(a > 0){ xxxxx }
应该把小范围在前面
如果情况比较多,判断情况比较复杂,最后一种情况不建议直接写else(必须有100%把握)

3.数组

一维数组

int [] a1 = {1,2,3,4,5};
int [] a2 = new int[5];
int [] a3 = new int[]{1,2,3,4,5};
System.out.println(a3[100]);
System.out.println(a3.length);

二维数组

开发中最多用到二维

int[] [] a5 = new int[5][];
System.out.println(a2[0]);
取出第一个一维数组的第二个元素
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
                //获取二维数组的元素
               System.out.println(arr[i][j]+",");
            }
        }

//数组的长度是属性,不是方法,下标一旦越界,一定会报错,当程序抛出异常时,出现异常的位置后面的代码是不会执行的
访问数组元素通过下标(索引),索引从0开始

数据类型的初始值:

byte、short、int、long:0
float、double:0.0
char:\u0000=>' '
boolean:false
String:null
int[]:null

4.循环

for循环

初始化条件:可以是任何类型,大部分情况使用int
判断条件 循环体 循环条件

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

for嵌套循环执行流程

执行流程:

1.i=0外层的for循环启动
2.执行外层的for循环的循环体
4.走里层的for循环想要走完j=0---j=4打印了5次*号 5.里层的for循环走完以后,相当于外层循环启动
6.i++
7.里层循环再开始

foreach循环

foreach:增强for循环,使用for循环遍历数组
foreach语句(增强for)循环,遍历数组
我们操作的是镜像数据,不是原始数据
foreach的操作更加安全,不影响原始数据
foreach是JDK5以后才有的

for (int i: arr) {
            //i就是数组中的元素
            System.out.println(i);
        }
 for (int[] ints : arr) {
            for (int anInt : ints) {
                System.out.print(anInt + ",");
            }
            System.out.println();
        }

while和do...while

while和do...while的区别
do..while无论如何循环至少执行一次
while循环优先判断执行条件是否符合要求,再执行循环体

int i = 10;
        while (i < 100){
            System.out.println(i);
            i++;
        }
        do{
            System.out.println(i);
            i++;
        }while (i < 20);

5.break和continue在Java中的使用

break和continue

for (int i = 1; i < 20; i++) {
            //需求 数7
            //从0到100 尾数是7或者7的倍数
            if (i % 7 == 0 || i % 10 == 7){
                System.out.println("你数到了" + i +"," + "喝酒吧!");
                //终止/跳出循环
                break;
                //终止当前次循环,开启下一次循环
                //continue;
            }else{
                System.out.println(i);
            }
            System.out.println("哈哈哈哈");
}

break和continue只能控制最近的循环!!!!

a:for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 5; j++) {
                System.out.println("j:" + j);
                if (i == 3){
                    //break和continue只能控制最近的循环
                    break a;
                }
                System.out.println("hhh");
            }
        }

终止程序执行的方式

0:安全退出
-1:强制退出
System.exit(-1);

计算器案例

从键盘输入两个数字和一个符号
加减乘除
打印输出计算结果
其中注意:
1.除数不能为0
2.符号输出不对怎么办
3.计算器能不能一直算下去

        Scanner sc = new Scanner(System.in);
        index:for (; ; ) {
            System.out.println("请输入第一个数:");
            double num1 = sc.nextDouble();
            n2:for(;;){
                System.out.println("请输入第二个数:");
                double num2 = sc.nextDouble();
                System.out.println("请输入运算符号:+-*/");
                String sep = sc.next();
                fh:for(;;){
                    switch (sep){
                        case "+":
                            System.out.println(num1 + sep + num2 + "=" + (num1+num2));
                            break;
                        case "-":
                            System.out.println(num1 + sep + num2 + "=" + (num1-num2));
                            break;
                        case "*":
                            System.out.println(num1 + sep + num2 + "=" + (num1*num2));
                            break;
                        case "/":
                            if (num2 == 0) {
                                System.out.println("除数不能为0,请重新输入");
                                continue n2;
                            }else {
                                System.out.println(num1 + sep + num2 + "=" + (num1/num2));
                                break;
                            }

                        default:
                            System.out.println("符号输入错误,请重新输入...");
                            continue fh;

                    }
                    c:for(;;){
                        System.out.println("是否继续计算:1.继续 2.退出");
                        String flag =sc.next();
                        switch (flag){
                            case "1":
                                continue index;
                            case "2":
                                System.out.println("计算器即将关闭,谢谢使用!");
                                break index;
                            default:
                                System.out.println("您输入的有误,请重新输入");
                                continue c;
                        }
                    }
                }
            }
        }
posted @ 2022-07-14 23:29  贵妃就是贵妃  阅读(25)  评论(1编辑  收藏  举报