怀念夏天 发表于 2023-10-15 13:50:08

BLOG-1 前三次作业作业总结

(1)前言:总结三次题目集的知识点、题量、难度等情况
  第一次的作业基本就是熟悉一下java基本的语法,这部分Java就算需要自学也并不算难,并且本身就有了一些c语言的基础,作业的问题主要是我们对于输入输出和判断循环语句的使用,总体的难度很低。第二次的作业就是类的使用以及私有化和相关封装。第三次是是除了第二题都还算简单,了解LocalDate类中of()、isAfter()或者isBefore()等方法的使用规则基本就能写,第二题是目前所有题目中最难的,逻辑相对复杂,包含许多知识点,
 
(2)设计与分析:
2.1第一次作业判断三角形类型输入三角形三条边,判断该三角形为什么类型的三角形。输入格式:

在一行中输入三角形的三条边的值(实型数),可以用一个或多个空格或回车分隔,其中三条边的取值范围均为。
输出格式:

(1)如果输入数据非法,则输出“Wrong Format”;
(2)如果输入数据合法,但三条边不能构成三角形,则输出“Not a triangle”;
(3)如果输入数据合法且能够成等边三角形,则输出“Equilateral triangle”;
(3)如果输入数据合法且能够成等腰直角三角形,则输出“Isosceles right-angled triangle”;
(5)如果输入数据合法且能够成等腰三角形,则输出“Isosceles triangle”;
(6)如果输入数据合法且能够成直角三角形,则输出“Right-angled triangle”;
(7)如果输入数据合法且能够成一般三角形,则输出“General triangle”。
https://img2023.cnblogs.com/blog/3275361/202310/3275361-20231005162100464-846544753.png
 
https://img2023.cnblogs.com/blog/3275361/202310/3275361-20231005151114645-1095048564.png
 踩坑心得
本题还是比较简单的,遇到问题主要是无法判断直角三角形,因为未考虑到精度问题,这里由于double类型的数在平方后精度丢失,输入的数据不一定为整数,程序是先四舍五入再进行勾股定理的,导致结果会有误差判断不相等无法判断三角形是否为直角。
 
https://img2023.cnblogs.com/blog/3275361/202310/3275361-20231005192635625-1668956592.png
 
把代码从直接用 == 判断改为用减法和误差进行判断,允许部分误差。
 
https://img2023.cnblogs.com/blog/3275361/202310/3275361-20231005193537678-957041037.png
 
这题圈复杂度直接拉满达到惊人的28,就算代码很短现在的我去看一下也要梳理一下才能看懂,直接使用 if 堆起来还是不建议(虽然写起来好理解),算是理解了为什么要求圈复杂度要低了qwq。
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner data = new Scanner(System.in);Float side1, side2, side3;side1 = data.nextFloat();side2 = data.nextFloat();side3 = data.nextFloat();if(1
页: [1]
查看完整版本: BLOG-1 前三次作业作业总结