2022-7-14 java_2 第七组 刘昀航


目录
  • 一、java约定规范
    • 1.关于建包
    • 2.控制台输入(Scanner)
      • 关于Scanner的bug
      • 计算器小练习:
  • 二、
    • 1.数组
      • 建立数组的三种方式:
      • 数据类型的初始值:
    • 2.二维数组
      • 使用for循环遍历二维数组:
      • 使用增强for循环遍历二维数组
  • 三、循环
    • 1.for循环
      • for循环的嵌套
      • goto语法
    • 2.foreach语句(增强for循环)
      • 增强for循环遍历数组:
    • 3.while 和 do..while
      • while
      • do...while
      • while和do...while的区别:

一、java约定规范

1.关于建包

1.尽量使用全小写字母
2.尽量不要出现_&123
3.一般情况下,使用站点名的逆序www.baidu.com
包名:com.baidu.模块名
com.baidu.架构名
根据实际情况com.模块.架构.功能.xxxx

2.控制台输入(Scanner)

键盘输入:
Scanner scanner = new Scanner(System.in);
方法:

  • nextLine() 回车获取整横
  • nextInt() 获取整数
  • nextXXX() XXX可以是Int,Double等

关于Scanner的bug

先用nextInt()接收int类型,再用nextLine()接收字符串的时候,会导致nextLine() 直接把回车接收到了, nextLine 不能继续接收字符串了

先上代码:

public class Ch02 {
    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);

        System.out.println("请输入:");
        int i = in.nextInt();
        System.out.println("请输入:");
        String next = in.nextLine();

        System.out.println(i);
        System.out.println("这是nextLine==》"+next);
    }
}        

输出为:
在这里插入图片描述
显然他并没有给我们机会输入nextLine的值,因为nextLine接收的是一行输入,而他还是以回车作为结束,可以这么理解,当输入1按下回车的时候,nextLine也被触发了。
解决办法: 可以新创建一个Scanner对象再调用nextLine方法

计算器小练习:

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

            《会用到死循环for(;;){}!!!!!!!!!》
         */
        /*
            请输入第一个数:
            1
            请输入第二个数:
            2
            请输入运算符号:
            *
            计算结果为:1*2=2
            是否继续计算:1、是  2、否
         */
    // 可以理解为是准备了一个键盘

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        Scanner scanner2 = new Scanner(System.in);

        index:
        for (; ; ) {
            System.out.println("请输入一个数字:");
            int num1 = scanner.nextInt();

            n1:
            for (; ; ) {
                System.out.println("请输入第2个数字:");
                int num2 = scanner.nextInt();

                n2:
                for (; ; ) {
                    System.out.println("请输入想要的运算符号:");
                    String sign = scanner2.nextLine();

                    switch (sign) {
                        case "+":
                            System.out.println(num1 + "+" + num2 + "=" + num1 + num2);
                            break;
                        case "-":
                            System.out.println(num1 + "-" + num2 + "=" + (num1 - num2));
                            break;
                        case "*":
                            System.out.println(num1 + "*" + num2 + "=" + (num1 * num2));
                            break;
                        case "/":
                            if (num2 == 0) {
                                System.out.println("除数不能为0,请重新输入!");
                                continue n1;
                            } else {
                                System.out.println(num1 + "/" + num2 + "=" + (num1 / num2));
                                break;
                            }
                        default:
                            System.out.println("符号输入错误!请重新输入");
                            continue n2;

                    }
                    c:
                    for (; ; ) {
                        System.out.println("是否继续计算:1、继续  2、退出");
                        String flag = scanner.next();
                        // 我让你输入1或者2,你非得输入3,结果就是你去重新选择
                        switch (flag) {
                            case "1":
                                // 继续计算
                                continue index;
                            case "2":
                                // 退出计算
                                System.out.println("计算器即将关闭,谢谢使用...");
                                break index;
                            default:
                                // 再重新让你选择一次
                                System.out.println("您输入的有误,请重新选择!!!");
                                continue c;
                        }
                    }
                }

            }
        }
        
    }

二、

1.数组

建立数组的三种方式:

数组特点:数组一旦声明,必须指定长度

int []a1 = {1,2,3,4,5};
//int a2[] = {1,2};		不建议使用
int []a2 = new int[5];

int []a4 = new int[]{1,2,3,4};

数据类型的初始值:

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

2.二维数组

定义一个二维数组:

        int [][] arr = new int[2][];
        arr[0] = new int[]{1,2,3,4};
        arr[1] = new int[]{-1,-2,-3,-4,-5};

使用for循环遍历二维数组:

		for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
                // 获取二维数组的元素
                System.out.print(arr[i][j] + ",");
            }
            System.out.println();
        }

使用增强for循环遍历二维数组

        for (int[] ints : arr) {
            for (int anInt : ints) {
               System.out.print(anInt + "、");
            }
            System.out.println();
        }

三、循环

1.for循环

       /*
         * 循环
         * for循环
         * 初始化条件
         * 判断条件
         * 循环体
         * 循环条件
         */
        var i = 10;
        System.out.println(i);
        /*
            初始化条件实际上可以是任意类型,只不过大部分情况我们使用的是int
         */
        for(int i = 0;i < 10;i++){
            System.out.println("i=" + i);
        }

for循环的嵌套

 /**
         *     *****
         *     *****
         *     *****
         *     *****
         *     *****
         *     矩形
         *     用循环的嵌套
         *     需要用到不换行的打印输出....
         */
        for (int i = 0; i < 5; i++) {
            /*
                执行流程:
                1.i=0 外层的for循环启动
                2.执行外层的for循环的循环体
                3.走里层的for循环(循环体)
                4.里层的for循环想要走完j=0---j=4打印了5次*号
                5.里层的for循环走完了之后,相当于外层循环的循环体执行完毕
                6.也就是i=0的这次外层循环执行完毕,开始执行i++
                7.i=1 外层的循环再次启动
                .....
             */
            for (int j = 0; j < 5; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
  • for循环中可以使用break;语句跳出循环

goto语法

循环的标签:goto语法 goto功能,代码如下:

  /*
         循环的标签:goto语法 goto功能
         */
        a:for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 5; j++) {
                System.out.println("j=" + j);
                if(j == 3){
                    /*
                        break和continue
                        只能控制离他们最近的循环
                     */
                    break a;
//                    continue;
                }
            }
            System.out.println("i=" + i);
        }

2.foreach语句(增强for循环)

可以理解为把数组中的元素通过:镜像给i
我们操作的不是原始数据,我们操作的是镜像数据
foreach的操作更加的安全,不影响原始数据
foreach是JDK5以后才有的

增强for循环遍历数组:

 int [] arr = new int[]{12,45,76,89,-50};
 for (int i : arr) {
            // i就是数组中的元素
            System.out.println(i);
        }

3.while 和 do..while

while

while(判断条件){

      循环体 (一条或多条语句)

}

//当判断条件不成立时循环结束

do...while

 do{

      循环体

 }while(判断条件)

 do-while循环 不管判断条件是否成立

//都会先执行循环体一次

while和do...while的区别:

do...while循环无论条件是否满足,循环至少执行一次。
while循环如果条件不满足,一次都不执行。