项目二:打好Java编程基础

项目二:打好Java编程基础

任务一:一元二次方程(顺序结构版)

1.思路分析

在这里插入图片描述

  • 源码:
    在这里插入图片描述

2.编程实现

创建net.zengjinyi.p02.t01
在包里创建Equation

在这里插入图片描述

  • 在主方法里编写代码
    在这里插入图片描述
运行程序,查看结果

在这里插入图片描述

  • 通过大语言模型来求根

在这里插入图片描述

改进程序,输入系数

在这里插入图片描述

运行程序,查看结果
  • 两个不相等实根
    在这里插入图片描述

  • 两个相等实根
    在这里插入图片描述

  • 没有实数根
    在这里插入图片描述

代码说明

本代码实现了一元二次方程的求解功能。代码遵循IPO模式,即输入、处理和输出。用户通过键盘输入方程的系数a、b、c,程序计算判别式delta,进而求得方程的两个根×1和x2,并输出结果。代码逻辑清晰,包含输入、处理和输出三个主要部分,方便用户快速求解一元二次方程。

程序小结

为了判断根的存在情况,以后我们会使用选择结构(if-else if-else)来处理

3.知识讲解

1、代码基本格式
语法格式

Java一切代码都要放在类里
在这里插入图片描述

代码规范(norm)

  • 好坏问题
    在这里插入图片描述

  • 主要目的是保证代码质量(Code Quality)

  • good or bad

代码规则(rule)

  • 对错问题
  • right or wrong
语句分类

结构定义语句

  • 定义类
    class 类名{

    }

  • 定义接口
    interface 接口名{

    }
    在这里插入图片描述

  • 定义方法
    返回值类型 方法名(参数类表){

    }
    在这里插入图片描述

功能执行语句

  • 计算和处理
大小敏感

比如,age与AGE是两个不同的变量,可以保存不同的值
在这里插入图片描述
shell
  贝壳,外壳
  交互式环境(interactive environment)

C、C++、Java、Python、JavaScript都是大小写敏感的语言

  • Python
    在这里插入图片描述
    如果执行ipython报错,那么执行命令:pip install ipython,安装ipython
    如果提示找不到匹配命令,那么配置环境变量
    在这里插入图片描述
    在这里插入图片描述

  • JavaScript
    下载Node.js的网址-https://nodejs.org/en/download
    在这里插入图片描述
    将安装程序下载到本地
    在这里插入图片描述
    设置安装位置D:\Program Files\nodejs
    在这里插入图片描述
    完成安装
    在这里插入图片描述
    查看Node版本
      执行命令:node -v
    在这里插入图片描述
    进入Node交互式环境,运行JavaScript代码
    在这里插入图片描述

 VB和VFP是大小写不敏感的编程语言

  • VB
    在这里插入图片描述

  • VFP
    在这里插入图片描述

缩进格式
  • 采用缩进格式输入代码,看起来层次分明
    在这里插入图片描述
  • 不采用缩进格式,程序依然可以运行出正确结果,但是代码显得凌乱,可读性很差
    在这里插入图片描述
  • 用进废退:Use it or lose it.
2、三种注释方式
单行注释
  • //注释内容
多行注释
  • /*
    注释内容
    注释内容
    注释内容
    */
文档注释
  • /**
    注释内容
    注释内容
    注释内容
    */
  • 导出项目的API文档,具体用法参看笔记2.1.2
思考题:为什么程序要有注释呢?
  • 更好的理解(understanding)
  • 更好的协作(cooperation)
演示

在这里插入图片描述

3、关键字与标识符
关键字(keyword)
  • 概念
      键字(Keyword)是编程语言里事先定义好并赋予了特殊含义的单词,也称作保留字(Reserved Word)。

  • JDK8有50个关键字,注意:都是小写
    在这里插入图片描述

  • JDK11增加了一些关键字,比如var用来声明变量
    在这里插入图片描述

  • var x = 100,自动推断变量x是整型,于是x + 150结果是250
    var y = “100”,自动推断变量y是字符串,于是y+150结果是“100150”

标识符(identifier)
  • 构成规则(rules)-明是非
    (1)构成(composition)
      字母、数字、_、$[letter,number,underscore,dollar]
      其实可以用汉字作为标识符,但是不建议用
    在这里插入图片描述

(2)打头(start with)
  不能以数字打头
在这里插入图片描述

(3)避免(avoid)
  避免用关键字作标识符
在这里插入图片描述
  给关键字添加一点东西就可以作为标识符
在这里插入图片描述
(4)演示
  合法标识符(legal identifier)
在这里插入图片描述

  非法标识符(illegal identifier)
在这里插入图片描述

  • 命名规范(norms)-知好歹
    (1)包名所有字母一律小写
      net.zengjinyi.p01.t02
    (2)类名和接口名每个单词首字母都要大写
      HelloWorld
      ArrayList(数组列表)
      HashMap(哈希映射)
    (3)常量名所有字母都大写,单词之间用下划线连接
      MAX_VALUE
      MIX_VALUE
      EXIT_ON_CLOSE
    在这里插入图片描述
    在这里插入图片描述

(4)变量名和方法名第一个单词全部小写,从第二个单词开始每个单词首字母大写
  nextLine-变量名
  getNextLine-方法名
(5)建议使用有意义的英文单词定义标识符,增加程序可读性
  username-用户名
  password-密码
  age-年龄
  price-价格
(6)演示(demenstration)
在这里插入图片描述

4、变量与常量
声明变量(declare variables)
  • 语法格式
    (1)声明:类型 变量名;
        1.类变量(全局变量)可以不初始化
        2.方法里的局部变量必须初始化(initialization)
    (2)定义:类型 变量名 = < 值>;
  • 基本数据类型
    (1)数值型
        1.byte
          字节型
          1个字节
          [ − 2 8 , 2 8 − 1 ] [-2^8,2^8-1] [28,281]
          [-128,127]
        2.short
          短整型
          2个字节
          [ − 2 16 , 2 16 − 1 ] [-2^{16},2^{16}-1] [216,2161]
          [-32,768,32,767]
        3.int
          整型(integer)
          4个字节
          [ − 2 32 , 2 32 − 1 ] [-2^{32},2^{32}-1] [232,2321]
          -2,147,483,648,2,147,483,647
        4.long
          长整型
          8个字节
          [ − 2 64 , 2 64 − 1 ] [-2^{64},2^{64}-1] [264,2641]
          [-9,223,372,036,854,775,808,9,223,372,036,854,775,807]
        5.float
          浮点型
          4个字节
          [1.4E-45,3.4028235E+38]
        6.double
          双精度
          8个字节
          [4.9E-324,1.7976931348623157E+308]
    (2)字符型
        char
          字符型
          2个字节
          [‘\u0000’,‘\uffff’]~[0,65,535]
    (3)布尔型
        boolean
          true
          false
  • 案例演示
    在这里插入图片描述
    注意事项
      长整型数,后面要加L(最好大写,小写容易跟数字1混淆)
      实数,默认是双精度,如果要赋给浮点型变量,后面要加f或F,否则会报错
定义常量(declare constants)
  • 语法格式
    final 类型 常量名 =<值>
  • 简要说明
    常量名最好全部大写
    常量不能再给它赋值
  • 案例演示
    在这里插入图片描述
5、算术运算与算术表达式
算术运算符(arithmetic operators)
  • + + +
    (1)正号(plus sign)
    (2)+3
    (3)plus three
    在这里插入图片描述

  • − -
    (1)负号(minus sign)
    (2)-3
    (3)minus three
    在这里插入图片描述
    (4)我欠人家3元
        1.I owe someone three yuan.
        2.I’m in debt to someone for three yuan.
        3.我 - 债务人(debtor)
        4.人家 - 债主(lander,locaner)

  • + + +
    (1)加(add - addlition)
        sum(和)
    (2)3 + 2 = 5
    (3)Math English:Three plus two equals five.
    (4)Daily English:Add two to three,and you will get five.
    在这里插入图片描述

  • − -
    (1)减(subtract - subtraction)
        difference(差)
    (2)Example:5 - 3 =2
    (3)Math English:Five minus three equals two.
    (4)Daily English:Subtract three from five,and you will get two.
    在这里插入图片描述

  • ∗ *
    (1)乘(multiple - multiplication)
       product(积)
        cross product 叉乘
        dot product - 点乘
         2 × 3 = 6 2\times3=6 2×3=6 - cross product
         2 ⋅ 3 = 6 2\cdot3=6 23=6 - dot product
    (2)Example:3 * 7 = 21
    (3)Math English:Three times seven equals twenly-one.
    (4)Daily English:Multiply three by seven,and you will get twenty-one.
    在这里插入图片描述

  • / / /
    (1)除(divide - division)
      quotient(商)
        IQ
          Intelligence Quotient
          智商
           21 ÷ 3 = 7 21 \div 3=7 21÷3=7
        EQ
          Emotional Quotient
          情商
    (2)Example:21/3=7
    (3)Math English:Twenty-one divided by three euals seven.
    (4)Daily English:Divide twenty-one by three,and you will get seven.
    在这里插入图片描述

  • %
    (1)求余(remainder)|求模(modulo)
    (2)32 % 5 = 2
    (3)Thirty-two modulo five equals two
    (4)作用
      可以用作分类
        比如对2求余,可以将整数分为奇数和偶数
    (5)引申
    利用/%运算符可以编写一个带余除法程序
    在这里插入图片描述
    package net.zengjinyi.p02.t01;

      import java.util.Scanner;
      
      /**
       * 功能:带余除法
       * 作者:
       * 日期:2024年04月10
       */
      public class DivisionWithRemainder {
          public static void main(String[] args) {
              //声明部分
              int a, b, q, r;
              Scanner sc = new Scanner(System.in);
      
              //输入部分
              System.out.print("a = ");
              a = sc.nextInt();
              System.out.print("b = ");
              b = sc.nextInt();
      
              //处理部分
              q = a / b;
              r = a % b;
      
              //输出部分
              System.out.println(a + "÷" + b + "=" + q + "……" + r);
          }
      }
    
  • + + ++ ++
    (1)自增(auto-increment)
        1.前自增
          ++n
          先加后用
    在这里插入图片描述

    2.后自增
        n++
        先用后加
在这里插入图片描述
            计算1+2+3+……+100
在这里插入图片描述
            用Python完成同样任务
在这里插入图片描述

  • − − --
    (1)自减(auto-decrement)
        1.前自减
            --n
            先减后用
    在这里插入图片描述
        2.后自减
            n–
            先用后减
    在这里插入图片描述

            计算100+99+……+1
在这里插入图片描述

            用Python完成同样任务
在这里插入图片描述
注: + + ++ ++, − − -- 只能作用在变量上,不能作用在常量或表达式上

运算优先级(operation precedence)
  • 正负
  • 乘除求余
  • 加减
  • 注:用括号改变优先次序
算术表达式(arithmetic expression)
  • 概念(concept)
        利用算术运算符将常量和变量连接起来的表达式
        x 2 + y 3 − 3 z 2 3 x 2 − 4 y 3 + 4 z 3 \displaystyle\frac{x^2 +y^3-3z^2}{3x^2-4y^3+4z^3} 3x24y3+4z3x2+y33z2
  • 实例(example)
        方法一
            (xx +yyy-3zz)/(3xx-4yyy+4zzz)
        方法二
            (x
    x+Math.pow(y,3) -3zzz/(3xx-4Math.pow(y,3)+4*math.pow(z,3)
6、赋值运算符
简单赋值运算(simple assignment operator)
  • 语法格式
        变量 = 表达式

  • 简单说明
        赋值运算具有双重功能,先计算赋值号右边表达式的值,然后将赋值给左边的变量
    因为Java是一种静态语言,所以要求表达式类型要与变量类型匹配,否则就会报错

  • 案例演示
    在这里插入图片描述

        兼容
            compatible-adj.兼容的
                This application is not compatible with windows11.
            compatibility-n.兼容性
                Our computers have very good compatibility
        对比动态语言Python,比较两者异同
    在这里插入图片描述

  • 英语学习
        1.int a = 666;
        2.Assign 666 to the int variable a.
        3.将666赋给整型变量a。

复合赋值运算(compound assignment operators)
  • 基本概念
        将加减乘除求余运算和赋值运算合在一起使用
  • 语法格式
        1.+=
            a += b
                精简一点,但是可读性不好
            a = a + b
                相比较而言,可读性更好
        2.-=
            a -= b
            a = a - b
        3.*=
            a *= b
            a = a * b
        4./=
            a /= b
            a = a / b
        5.%=
            a %= b
            a = a % b
    more concise but less readable
  • 案例演示
    计算1+2+3+……+100(arithmetic sequence)
    在这里插入图片描述
7、键盘输入数据
利用扫描器
  • 创建扫描器对象
        Scanner sc = new Scanner(System.in);
        System.in
            标准字节输入流
            表示的物理设备-键盘

  • 输入各种类型对象
        1.整数
            sc.nextInt()
        2.浮点型实数
            sc.nextFloat()
        3.双精度实数
            sc.nextDouble()
        4.字符串
            sc.next()
                不接收空格之后的内容

  • 案例演示
    net.zengjinyi.p02.t01包里创建ScannerDemo
    在这里插入图片描述

      package net.zengjinyi.p02.t01;
    
      import java.util.Scanner;
    
      /**
       * 功能:扫描器演示
       * 作者:
       * 日期:2024年04月10
       */
      public class ScannerDemo {
          public static void main(String[] args) {
              //声明部分
              int age;
              float price;
              double score;
              String name;
              String message;
              Scanner sc = new Scanner(System.in);
      
              //输入部分
              System.out.print("age = ");
              age = sc.nextInt();
              System.out.print("price = ");
              price = sc.nextFloat();
              System.out.print("score = ");
              score = sc.nextDouble();
              System.out.print("name = ");
              name = sc.next();
              System.out.print("message = ");
              message = sc.next();
      
              //输出部分
              System.out.println("age = " + age);
              System.out.println("price = " + price);
              System.out.println("score = " + score);
              System.out.println("name = " + name);
              System.out.println("message = " + message);
          }
      }
    

运行程序,查看结果
在这里插入图片描述

利用缓冲流
  • 思路
       1.将标准字节输入流转换成字符输入流
       2.再将字符输入流转换成缓冲字符输入流
       3.利用缓冲字符输入流的readLine()方法接受任意字符串(可以包含空格)

  • 案例演示
    net.zengjinyi.p02.t01包里创建bufferedReaderDemo

      package net.zengjinyi.p02.t01;
      
      import java.io.BufferedReader;
      import java.io.IOException;
      import java.io.InputStreamReader;
      
      /**
       * 功能:缓冲字符输入流演示
       * 作者:
       * 日期:2024年04月10
       */
      public class BufferedReaderDemo {
          public static void main(String[] args) {
              String message ="";
              BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
      
              System.out.print("message = ");
              try{
                  message = br.readLine();
              }catch (IOException e){
                  System.err.println(e.getMessage());
              }
      
              System.out.println("message = " + message);
          }
      }
    

    运行程序,查看结果
    在这里插入图片描述

4.拓展练习

  • 幸运抽奖-由卡号计算幸运数
    (1)卡号是4位整数
    (2)各位数字相加得到幸运数
    (3)输入四位整数的卡号
    (4)编程计算幸运数
    (5)关键点:整数拆分
  • 计算三角形面积(海伦公式)
  • 输出26个英文字母(小写、大写)

5.总结提高

英文学习
  • power(权力)
    (1)力量
    (2)权力
    (3)电源
    (4)幂
  • telation(关系)
    (1)competition(竞争)
    (2)cooperation(合作)
    (3)Keep a balance between competition and cooperation 保持竞争与合作的平衡
  • program(程序)
    (1)计算机科学家沃斯提出一个著名的公式
    (2)program = data structure +algorithm
    (3)程序 = 数据结构 + 算法
  • static language
    (1)静态语言
      实例:C,C++,Java,Scala
      特点:变量必须先声明后使用
          所赋值类型必须与声明的变量类型匹配
  • dynamic language
    (1)动态语言
      实例:JavaScript,Python,Ruby
      特点:变量无须声明,直接赋值使用
          变量类型由所赋值类型来决定
  • initial
    (1)初始的
      初值(initial value)
      初心(initial intention):不忘初心,方得始终
    (2)派生词
      initialize:动词:初始化
      initialization:名词:初始化
  • define
    (1)动词:定义
      在Python里定义函数的关键字是def
        def add(a,b):
         return a+b
    在这里插入图片描述
    在这里插入图片描述

  演示Java里定义函数(方法)
    int add(int a,int b){
      return a+b;
   }
    Java是静态语言,必须指定参数和返回值类型
在这里插入图片描述

    如果实参类型与虚参类型不兼容,函数调用就会报错
在这里插入图片描述

(2)派生词
  definition:名词:定义

  • 在这个任务中,我们编写了一个Java程序来解决一元二次方程,程序接受用户输入的系数a、b、c,并计算出方程的根。通过计算判别式delta的值,我们可以确定方程有两个不相等实根、两个相等实根还是没有实数根。这个程序遵循了IPO模式,即输入(Input)、处理(Process)和输出(Output),逻辑清晰,方便用户快速求解一元二次方程。
    在改进程序中,我们引入了Scanner对象,以便从键盘接收用户输入的数据,并引入了中间变星delta。通过用户输入的系数,程序能够准确计算方程的根,并输出对应的结果,包括两个不相等实根、两个相等实根和没有实数根的情况。
    在编写代码时,我们遵循了Java的关键字和标识符规范,命名规范为包名小写、类名和接口名首字母大写、常量名全大写、变是名和方法名采用驼峰命名法。同时,我们介绍了Java中的基本数据类型、算术运算符、赋值运算符和键盘输入数据的方法。
    通过这个任务,我们不仅学习了如何编写一个简单的Java程序来解决数学问题,还加深了对Java编程规范和基础知识的理解。这些知识对于日后的编程工作和学习都非常重要。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值