20220714_第七小组_张红睿_学习笔记

Java基础第二天

1. 了解

1.1 IDEA首页

  • Project 项目
  • Remote Development 远程开发
  • Customize 常规主题
  • Plugins 插件
  • Learn IntelliJ IDEA 学习

1.2 项目中的JDK

< 11 >是Jdk版本,该目录下就是项目所需JDK的所在,内部都是以.class形式的文件,而不是.java。因为在项目运行时,如果是.java那么还需要再将这些文件进行编译,是不需要的。而且IDE提供了反编译的功能,可将.java编译后的.class文件重新反编译成.java呈现出来。

2. 掌握

2.1 包的命名规则

  • 尽量不要出现_&123

  • 尽量使用全小写字母

  • 一般情况下,使用站点名的逆序www.baidu.com

    • 包名com.baidu.模块名

    • 包名com.baidu.架构名

    • 根据实际情况com.baidu.模块.架构.功能.xxx

2.2 使用import导入工具

import java.util.Scanner;

2.3 键盘输入

// 构建一个工具,键盘输入
Scanner in = new Scanner(System.in);

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

2.3.1 问题1:输入字符串中有空格

image

​ 如上图所示,当输入字符串中含有空格时,输出结果不包含空格后的字符串,因为在Scanner中,空格是next()函数的一个默认结束标记,导致字符串被截断,同样next()还有一个默认结束标记为换行符"\n"。

解决方法

​ 使用Scanner的public Scanner useDelimiter(Pattern pattern)方法将默认分隔符更换

...
// 更换默认分隔符
in.useDelimiter("\n");
...

image

2.4 数据类型初始值/默认值

基本数据类型 byte (byte)0
short (short)0
int 0
long 0L
float 0.0F
double 0.0
char '\u0000' -> ''
boolean false
引用数据类型 ~~~ null

3. 重点

3.1 引用数据类型

3.1.1 String

1. Java中的字符串只能用双引号
String str1 = "Hello World";
2. 字符串拼接,使用“+”类似C++的运算符重载
System.out.println("早上好: " + str1 + ", 吃饭了吗?");

3.2 数组

3.2.1 一维数组

1. 初始化:
int[] a1 = { 1, 2, 3, 4, 5 }; 	  // 不推荐
int[] a2 = new int[5]; 			  // 推荐
int[] a3 = new int[]{1, 2, 3, 4}; // 推荐
int[] a4;
a4 = new int[]{1, 2, 3, 4};

3.2.2 二维数组

1. 初始化
// 二维数组
int[][] a5 = new int[5][];

3.3 条件语句

3.3.1 if-else

if (条件表达式){
    代码块
} else if (条件表达式) {
    代码块
}else{
    代码块
}

3.3.2 switch

switch (表达式){
    case 取值1:
        代码块;
        (break;)
    case 取值2:
        代码块;
        (break;)
       ...
        
    default:
        默认执行代码块;
}

3.4 循环语句

3.4.1 while

while (条件表达式){
    代码块
}

3.4.2 do-while

do {
    代码块(相较于while,该代码块至少执行一次)
}while (条件表达式)

3.4.3 for

for (初始化表达式; 条件表达式; i++) {
    代码块
}
for (int i = 0; i < 5; i++) {
    for (int j = 0; j < 5; j++) {
        System.out.print('*');
    }
    System.out.print('\n');
}

image

3.4.4 foreach

​ foreach语句(增强for循环)遍历数组

  • 可以理解为把数组中的元素通过镜像数据
  • foreach的操作更加的安全,不影响原始数据
  • foreach是JDK5以后才有的
int[] arr = new int[]{1, 2, 3, 4, 5};
for (int value: arr) {
    System.out.print(value + " ");
}

image

3.4.5 死循环

  • while(true){}
  • do{}while(true)
  • for(;😉

死循环被执行后,程序将一直处于运行状态。也可利用死循环达成一些目的,只需要适时改变死循环的条件为false或者使用break跳出、return返回,也可以利用程序退出方式。

3.5 关键字break/continue

break:


结果:

continue:


结果:

4. 注意

4.1 if-else 与 多重if

if-else只走第一次满足条件的代码块,而多重if的所有条件都要判断一遍,可能走多个代码块。

​ 所以在编程中避免使用多重if。

4.2 退出方式

  • return:退出函数。
  • System.exit(0):退出程序。
  • break:跳出循环。
  • continue:跳出本次循环。

5.案例

5.1 打印图案

请打印出以下2N+1*N的小图案:

点击查看代码
/*
#####*#####
####***####
###*****###
##*******##
#*********#
*/

public static void main(String[] args) {
    int row = 5;
    for (int i = 0; i < row; i++) {
        for (int j = row - i; j > 0; j--)
            System.out.print("#"); // 打印左边的#
        for (int j = 0; j < (2 * i + 1); j++)
            System.out.print("*"); // 打印中间的*
        for (int j = row - i; j > 0; j--)
            System.out.print("#"); // 打印右边的#
        System.out.println(); //换行
    }
}

5.2 猜数字

设置一个整数,然后通过返回大小的方式进行猜数字。

点击查看代码
public static void main(String[] args) {
    int keyNum = 67;
    int count = 0;
    Scanner input = new Scanner(System.in);
    while (true){
        System.out.println("请输入你想要猜的数: ");
        int guessNum = input.nextInt();
        count++;
        if (guessNum > keyNum){
            System.out.println("大了");
        } else if (guessNum < keyNum) {
            System.out.println("小了");
        }else{
            System.out.println("恭喜你猜对了! 总次数: " + count + "。");
            break;
        }
    }
}

5.3 简易计算器

点击查看代码
public class Calculator {
    public static boolean isValid(String str){
        try{
            Double.parseDouble(str);
        }catch (NumberFormatException exp){
            return false;
        }
        return true;
    }

    public static boolean isDouble(String str){
        if (!isValid(str)){
            return false;
        }
        // 如果输入的字符串中只有一个".", 则为小数, 不包含或有两个及以上都不是小数
        if (str.contains(".")){
            String new_str = str.replace(".", "");
            if (str.length() - new_str.length() == 1)
                return true;
        }
        return false;
    }

    public static boolean isInteger(String str){
        // 输入的数要么不合法,要么是小数,要么就是整数
        if (isDouble(str) || !isValid(str))
            return false;
        return true;
    }

    public static boolean isOperator(String str){
        if(str.length() != 1)
            return false;
        switch (str.charAt(0)){
            case '+':
            case '-':
            case '*':
            case '/':
                return true;
            default:
                return false;
        }
    }

    public static void main(String[] args) {
        // 简易计算器
        Scanner input = new Scanner(System.in);
        String num1, num2, operator;

        // 循环进行计算直到手动输入"2"退出
        while(true) {

            // 判断第一个数是否合法
            while (true) {
                System.out.println("请输入第一个数: ");
                num1 = input.next();
                if (isValid(num1))
                    break;
                System.out.println("输入不合法,请重新输入!");
            }

            // 判断除数是否为零
            while (true) {

                // 判断第二个数是否合法
                while (true) {
                    System.out.println("请输入第二个数: ");
                    num2 = input.next();
                    if (isValid(num2))
                        break;
                    System.out.println("输入不合法,请重新输入!");
                }

                // 判断运算符是否合法
                while (true) {
                    System.out.println("请输入运算符: ");
                    operator = input.next();
                    if (isOperator(operator))
                        break;
                    System.out.println("输入的不是运算符,请重新输入: + - * /");
                }
                if (!num2.equals("0") || !operator.equals("/"))
                    break;
                System.out.println("除数不能为零! 请重新输入第二个数: ");
            }

            // 进行计算
            switch (operator.charAt(0)) {
                case '+':
                    if (isInteger(num1) && isInteger(num2))
                        System.out.println("计算结果为: " + num1 + operator + num2 +
                                " = " + ((Integer.parseInt(num1) + Integer.parseInt(num2))));
                    else
                        System.out.println("计算结果为: " + num1 + operator + num2 +
                                " = " + ((Double.parseDouble(num1) + Double.parseDouble(num2))));
                    break;
                case '-':
                    if (isInteger(num1) && isInteger(num2))
                        System.out.println("计算结果为: " + num1 + operator + num2 +
                                " = " + ((Integer.parseInt(num1) - Integer.parseInt(num2))));
                    else
                        System.out.println("计算结果为: " + num1 + operator + num2 +
                                " = " + ((Double.parseDouble(num1) - Double.parseDouble(num2))));
                    break;
                case '*':
                    if (isInteger(num1) && isInteger(num2))
                        System.out.println("计算结果为: " + num1 + operator + num2 +
                                " = " + ((Integer.parseInt(num1) * Integer.parseInt(num2))));
                    else
                        System.out.println("计算结果为: " + num1 + operator + num2 +
                                " = " + ((Double.parseDouble(num1) * Double.parseDouble(num2))));
                    break;
                case '/':
                    if (isInteger(num1) && isInteger(num2))
                        System.out.println("计算结果为: " + num1 + operator + num2 +
                                " = " + ((Integer.parseInt(num1) / Integer.parseInt(num2))));
                    else
                        System.out.println("计算结果为: " + num1 + operator + num2 +
                                " = " + ((Double.parseDouble(num1) / Double.parseDouble(num2))));
                    break;
            }

            // 判断是否结束计算
            while (true) {
                System.out.println("是否继续运算:1.是 2.否");
                String goOn = input.next();
                if (Objects.equals(goOn, "1")) {
                    break;
                } else if (Objects.equals(goOn, "2")) {
                    System.out.println("程序即将退出,感谢使用...");
                    return;
                } else
                    System.out.println("输入不合法,请重新输入!");
            }
        }
    }
}
posted @ 2022-07-14 23:10  jzhr  阅读(19)  评论(0编辑  收藏  举报