Java博客作业(一)

一、前言

1.知识点总结

第一次大作业

题型总结:BMI测算、单位转换、奇数求和、房产税费计算、角色选择、学号识别、提取二进制数值、三角判断

涉及知识点:Scanner类的使用、if else语句的使用及嵌套、for循环的使用及嵌套、强制类型转换、条件判断、字符串的提取、字符串和整型的转化、Math类的使用、一维数组的使用、变量声明、类的封装、输出语句的使用

第二次大作业

题型总结:字母与数字的转换、串口字符解析、String的格式判断与内容提取

涉及知识点:Scanner类的使用、if else语句的使用及嵌套、字符串的提取、字符串和整型的转化、Math类的使用、一维数组的使用、类的封装、获取字符串长度、类的概念与调用、输出语句的使用

第三次大作业

题型总结:两点距离计算、线相关计算、三角形相关计算

涉及知识点:Scanner类的使用、if else语句的使用及嵌套、条件判断、正则表达式的学习和使用、字符串的比较、字符串的提取、字符串和整型的转化、Math类的使用、一维数组的使用、类的封装、获取字符串长度、输出语句的使用、强制数据类型转换、类的声明与使用、三角类型判断算法、方法的调用与数据返回

2.题量

第一次大作业:较多

第二次大作业:适中

第三次大作业:适中

3.难度评估

第一次大作业:简单

第二次大作业:7-1简单、7-2偏难、7-3适中

第三次大作业:困难

二、设计与分析

1.算法设计以及思路

第二次作业第二题

7-2 串口字符解析 (40 )

RS232是串口常用的通信协议,在异步通信模式下,串口可以一次发送5~8位数据,收发双方之间没有数据发送时线路维持高电平,相当于接收方持续收到数据“1”(称为空闲位),发送方有数据发送时,会在有效数据(5~8位,具体位数由通信双方提前设置)前加上1位起始位“0”,在有效数据之后加上1位可选的奇偶校验位和1位结束位“1”。请编写程序,模拟串口接收处理程序,注:假定有效数据是8位,奇偶校验位采用奇校验。

输入格式:

由0、1组成的二进制数据流。例如:11110111010111111001001101111111011111111101111

输出格式:

过滤掉空闲、起始、结束以及奇偶校验位之后的数据,数据之前加上序号和英文冒号。
如有多个数据,每个数据单独一行显示。
若数据不足11位或者输入数据全1没有起始位,则输出"null data",
若某个数据的结束符不为1,则输出“validate error”。
若某个数据奇偶校验错误,则输出“parity check error”。
若数据结束符和奇偶校验均不合格,输出“validate error”。
如:11011或11111111111111111。
例如:
1:11101011
2:01001101
3:validate error

类图:

大概思路:

把串口每次发送的数据看作一个对象,对其进行合法判断、数据提取、最后进行类型判断

若数据不足11位或者输入数据全1没有起始位,则输出"null data",

若数据的结束符不为1,则输出“validate error”。

若数据奇偶校验错误,则输出“parity check error”。

若数据结束符和奇偶校验均不合格,输出“validate error”。

源码(具体代码分析写在注释里):

import java.util.Scanner;public class Main {public static void main(String []args) {Fn code=new Fn();// 每个串口都看作一个对象,但本题只判断一个,所以这里只new一次code.judge_type();     
}
}
class Fn{Scanner s =new  Scanner(System.in);String com = s.next();//获取串口int length = com.length();//计算字符串长度String a = new String();int tem = length;void judge_type() {if(length<11||all1())//如果小于11,不满足一个串口的基本位数,或者全是1,找不到起始位0,都输出空串口System.out.print("null data");else{int odd = 0;int id=0;int j=0;    boolean judge =true;for(int i=0;i

第三次作业第一题

7-1 点线形系列1-计算两点之间的距离 (10 )

输入两个点的坐标,计算两点之间的距离

输入格式:

4个double类型的实数,两个点的x,y坐标,依次是x1、y1、x2、y2,两个点的坐标之间以空格分隔,每个点的x,y坐标以英文“,”分隔。例如:0,0 1,1或0.1,-0.3 +3.5,15.6。
若输入格式非法,输出"Wrong Format"。
若输入格式合法但坐标点的数量超过两个,输出“wrong number of points”。

输出格式:

计算所得的两点之间的距离。例如:1.4142135623730951

类图:

大概思路:

Point函数是对字符串数据的转换,legal函用来判断输入数据是否合法,这里学习了正则表达式,表达式写的比较简单,这题的算法也比较简单,

若输入格式非法,输出"Wrong Format"。若输入格式合法但坐标点的数量超过两个,输出“wrong number of points”。

 源码(具体代码分析写在注释里):

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner s = new Scanner(System.in);String str = s.nextLine();String[] dj = str.split(" ");boolean a =false;for(int i=0;i2)//前两个点的输入合法,但输入多个坐标时System.out.print("wrong number of points");}elseSystem.out.print("Wrong Format");}else System.out.print("Wrong Format");}
}class P {double Point(String r) {//这个地方开始想复杂了,后面其实可以强制转换成数字的,符号也可以double tran = 0;int len = r.length();if (r.charAt(0) == '+') {r = r.substring(1, len);tran = Double.parseDouble(r);}if (r.charAt(0) == '-') {r = r.substring(0, len);tran = Double.parseDouble(r);}if(Character.isDigit(r.charAt(0)))              {r = r.substring(0);tran = Double.parseDouble(r);
}return tran;}boolean legal(String x) {String w = "[+-]?(\\d+)(\\.\\d+)?$";//判断输入for(int i=1;i1&&x.charAt(1)!='.')return false;}if(x.matches(w))//匹配return true;elsereturn false; }}

第三次作业第二题

7-2 点线形系列2-线的计算 (42 分)

用户输入一组选项和数据,进行与直线有关的计算。选项包括:
1:输入两点坐标,计算斜率,若线条垂直于X轴,输出"Slope does not exist"。
2:输入三个点坐标,输出第一个点与另外两点连线的垂直距离。
3:输入三个点坐标,判断三个点是否在一条线上,输出true或者false。
4:输入四个点坐标,判断前两个点所构成的直线与后两点构成的直线是否平行,输出true或者false.
5:输入四个点坐标,计算输出前两个点所构成的直线与后两点构成的直线的交点坐标,x、y坐标之间以英文分隔",",并输出交叉点是否在两条线段之内(不含四个端点)的判断结果(true/false),判断结果与坐标之间以一个英文空格分隔。若两条线平行,没有交叉点,则输出"is parallel lines,have no intersection point"。

输入格式:

基本格式:选项+":"+坐标x+","+坐标y+" "+坐标x+","+坐标y。
例如:1:0,0 1,1
如果不符合基本格式,输出"Wrong Format"。
如果符合基本格式,但输入点的数量不符合要求,输出"wrong number of points"。
不论哪个选项,如果格式、点数量都符合要求,但构成任一条线的两个点坐标重合,输出"points coincide",

输出格式:

见题目描述。

类图:

 大概思路:

通过legal函用来判断输入数据是否合法,把选项看作一个类,具体写法和第一题差不多,但写到这时候发现用一个函数把字符串转换成数字类型太麻烦,直接强制转换,正负号也可以保留下来。

这道题复杂的是算法

计算斜率:k=(y2-y1)/(x2-x1);

计算一点到另外两点构成的直线的距离:需要先算直线方程,再求点到该直线的距离 :    

   

判断三点是否在一线,即判断三点中任意两点组成的线段的斜率是否相等,这个比较简单,用(y1-y2)*(x-x2) == (x1-x2)*(y-y2)判断即可

判断两条线是否平行,即判断斜率是否存在且相等,比较两条线k=(y2-y1)/(x2-x1);

判断两线关系,如果不平行,则计算交点位置,并判断交点是否在线上。交点公式参考文章:两点确定一条直线,已知四个点确定的两条直线,求这两条直线的交点_risemypassion的博客-CSDN博客

源码(具体代码分析写在注释里):

import java.util.Scanner;public class Main{public static void main(String[] args) {Scanner s = new Scanner(System.in);String str = s.nextLine();P z = new P();boolean a =false;for(int i=0;i 1 && x.charAt(1) != '.')return false;}if (x.matches(w))return true;elsereturn false;}void One(String x) {String[] dj = x.split(" ");String[] point1 = dj[0].split(",");String[] point2 = dj[1].split(",");if (!dj[0].equals(dj[1])) {//防止点重合if (point1.length == 2 && point2.length == 2) {//判断有x,y的值if (legal(point1[0]) && legal(point1[1]) && legal(point2[0]) && legal(point2[1])) {//判断输入数据合法double x1 = Double.parseDouble(point1[0]);double y1 = Double.parseDouble(point1[1]);double x2 = Double.parseDouble(point2[0]);double y2 = Double.parseDouble(point2[1]);if (dj.length == 2)if (x1 == x2)System.out.print("Slope does not exist");elseSystem.out.print((y2 - y1) / (x2 - x1));//一切正确,输出斜率if (dj.length > 2)System.out.print("wrong number of points");} elseSystem.out.print("Wrong Format");} elseSystem.out.print("Wrong Format");} elseSystem.out.print("points coincide");}void Two(String x) {String[] dj = x.split(" ");String[] point1 = dj[0].split(",");String[] point2 = dj[1].split(",");if (dj.length < 3)//防止点数量不够,导致不存在后面的元素System.out.print("wrong number of points");String[] point3 = dj[2].split(",");if (!dj[1].equals(dj[2])) {if (point1.length == 2 && point2.length == 2 && point3.length == 2) {                if (legal(point1[0]) && legal(point1[1]) && legal(point2[0]) && legal(point2[1]) && legal(point3[0])&& legal(point3[1])) {double x0 = Double.parseDouble(point1[0]);//将输入的子字符串转换成数据double y0 = Double.parseDouble(point1[1]);double x1 = Double.parseDouble(point2[0]);double y1 = Double.parseDouble(point2[1]);double x2 = Double.parseDouble(point3[0]);double y2 = Double.parseDouble(point3[1]);if (dj.length == 3)System.out.print(Math.abs((y2 - y1) * (x0 - x1) - (x2 - x1) * (y0 - y1))//点到直线的公式/ Math.sqrt(Math.pow((y1 - y2), 2) + Math.pow((x1 - x2), 2)));if (dj.length > 3)System.out.print("wrong number of points");} elseSystem.out.print("Wrong Format");} elseSystem.out.print("Wrong Format");} elseSystem.out.print("points coincide");}void Three(String x) {String[] dj = x.split(" ");String[] point1 = dj[0].split(",");if (dj.length < 3)System.out.print("wrong number of points");String[] point2 = dj[1].split(",");String[] point3 = dj[2].split(",");if (!dj[1].equals(dj[2])&& !dj[0].equals(dj[2])&& !dj[0].equals(dj[1])) {if (point1.length == 2 && point2.length == 2 && point3.length == 2) {if (legal(point1[0]) && legal(point1[1]) && legal(point2[0]) && legal(point2[1]) && legal(point3[0])&& legal(point3[1])) {double x0 = Double.parseDouble(point1[0]);double y0 = Double.parseDouble(point1[1]);double x1 = Double.parseDouble(point2[0]);double y1 = Double.parseDouble(point2[1]);double x2 = Double.parseDouble(point3[0]);double y2 = Double.parseDouble(point3[1]);if (dj.length == 3 &&((y2- y1) / (x0 - x1) == (y0 - y1) / (x2 - x1)||(y0- y1) / (x2 - x1) == (y2 - y1) / (x0 - x1)))//判断三点是否一线System.out.print("true");if ((y2- y1) / (x0 - x1) != (y0 - y1) / (x2 - x1)||(y0- y1) / (x2 - x1) != (y2 - y1) / (x0 - x1))System.out.print("false");if (dj.length > 3)System.out.print("wrong number of points");} elseSystem.out.print("Wrong Format");} elseSystem.out.print("Wrong Format");} elseSystem.out.print("points coincide");}void Four(String x) {String[] dj = x.split(" ");String[] point1 = dj[0].split(",");String[] point2 = dj[1].split(",");if (dj.length < 4)System.out.print("wrong number of points");String[] point3 = dj[2].split(",");String[] point4 = dj[3].split(",");if (!dj[0].equals(dj[1]) && !dj[2].equals(dj[3])) {if (point1.length == 2 && point2.length == 2 && point3.length == 2 && point4.length == 2) {if (legal(point1[0]) && legal(point1[1]) && legal(point2[0]) && legal(point2[1]) && legal(point3[0])&& legal(point3[1]) && legal(point4[0]) && legal(point4[1])) {double x0 = Double.parseDouble(point1[0]);double y0 = Double.parseDouble(point1[1]);double x1 = Double.parseDouble(point2[0]);double y1 = Double.parseDouble(point2[1]);double x2 = Double.parseDouble(point3[0]);double y2 = Double.parseDouble(point3[1]);double x3 = Double.parseDouble(point4[0]);double y3 = Double.parseDouble(point4[1]);if (dj.length == 4 && (y3 - y2) / (x3 - x2) == (y1 - y0) / (x1 - x0))System.out.print("true");if ((y3 - y2) / (x3 - x2) != (y1 - y0) / (x1 - x0))System.out.print("false");if (dj.length > 4)//点数量的判断System.out.print("wrong number of points");} elseSystem.out.print("Wrong Format");} elseSystem.out.print("Wrong Format");} elseSystem.out.print("points coincide");}void Five(String x) {String[] dj = x.split(" ");String[] point1 = dj[0].split(",");String[] point2 = dj[1].split(",");if (dj.length < 4)System.out.print("wrong number of points");String[] point3 = dj[2].split(",");String[] point4 = dj[3].split(",");if (!dj[0].equals(dj[1]) && !dj[2].equals(dj[3])) {if (point1.length == 2 && point2.length == 2 && point3.length == 2 && point4.length == 2) {if (legal(point1[0]) && legal(point1[1]) && legal(point2[0]) && legal(point2[1]) && legal(point3[0])&& legal(point3[1]) && legal(point4[0]) && legal(point4[1])) {double x0 = Double.parseDouble(point1[0]);double y0 = Double.parseDouble(point1[1]);double x1 = Double.parseDouble(point2[0]);double y1 = Double.parseDouble(point2[1]);double x2 = Double.parseDouble(point3[0]);double y2 = Double.parseDouble(point3[1]);double x3 = Double.parseDouble(point4[0]);double y3 = Double.parseDouble(point4[1]);if ((y3 - y2) / (x3 - x2) == (y1 - y0) / (x1 - x0))//线平行的情况System.out.print("is parallel lines,have no intersection point");else {double yz = ((y0 - y1) * (y3 - y2) * x0 + (y3 - y2) * (x1 - x0) * y0//xz,yz为交点坐标+ (y1 - y0) * (y3 - y2) * x2 + (x2 - x3) * (y1 - y0) * y2)/ ((x1 - x0) * (y3 - y2) + (y0 - y1) * (x3 - x2));double xz = x2 + (x3 - x2) * (yz - y2) / (y3 - y2);if (dj.length == 4) {System.out.print(xz + "," + yz + " ");if ((y1 - y0) / (xz - x0) == (yz - y0) / (x1 - x0),|| (y3 - y2) / (xz - x2) == (yz - y2) / (x3 - x2))System.out.print("true");elseSystem.out.print("false");}if (dj.length > 4)System.out.print("wrong number of points");}} elseSystem.out.print("Wrong Format");} elseSystem.out.print("Wrong Format");} elseSystem.out.print("points coincide");}
}

第三次作业第三题

7-3 点线形系列3-三角形的计算 (48 分)

 用户输入一组选项和数据,进行与三角形有关的计算。选项包括:

1:输入三个点坐标,判断是否是等腰三角形、等边三角形,判断结果输出true/false,两个结果之间以一个英文空格符分隔。

2:输入三个点坐标,输出周长、面积、重心坐标,三个参数之间以一个英文空格分隔,坐标之间以英文","分隔。

3:输入三个点坐标,输出是钝角、直角还是锐角三角形,依次输出三个判断结果(true/false),以一个英文空格分隔,

4:输入五个点坐标,输出前两个点所在的直线与三个点所构成的三角形相交的交点数量,如果交点有两个,则按面积大小依次输出三角形被直线分割成两部分的面积。若直线与三角形一条线重合,输出"The point is on the edge of the triangle"

5:输入四个点坐标,输出第一个是否在后三个点所构成的三角形的内部(输出in the triangle/outof triangle)。

必须使用射线法,原理:由第一个点往任一方向做一射线,射线与三角形的边的交点(不含点本身)数量如果为1,则在三角形内部。如果交点有两个或0个,则在三角形之外。若点在三角形的某条边上,输出"on the triangle"

输入格式:

基本格式:选项+":"+坐标x+","+坐标y+" "+坐标x+","+坐标y。点的x、y坐标之间以英文","分隔,点与点之间以一个英文空格分隔。

输出格式:

基本输出格式见每种选项的描述。
异常情况输出:
如果不符合基本格式,输出"Wrong Format"。
如果符合基本格式,但输入点的数量不符合要求,输出"wrong number of points"。
如果输入的三个点无法构成三角形,输出"data error"。
注意:输出的数据若小数点后超过6位,只保留小数点后6位,多余部分采用四舍五入规则进到最低位。小数点后若不足6位,按原始位数显示,不必补齐。例如:1/3的结果按格式输出为 0.333333,1.0按格式输出为1.0

选项4中所输入线的两个点坐标重合,输出"points coincide",

类图

 大概思路:

数据输入的判断同前两题一样,但难度相对上一题进一步升级,要对面的问题进行判断,有一定难度的提升

源码(具体代码分析写在注释里):

import java.util.Scanner;public class Main{public static void main(String[] args) {Scanner s = new Scanner(System.in);String str = s.nextLine();P z = new P();boolean a =false;for(int i=0;i 1 && x.charAt(1) != '.')return false;}if (x.matches(w))return true;elsereturn false;}String tran(double x) {String str_d = String.valueOf(x);str_d = str_d.substring(str_d.indexOf(".") + 1);int len = str_d.length();len = len > 6 ? 6 : len;String out = String.format("%." + len + "f", x);return out;}void One(String x) {String[] dj = x.split(" ");String[] point1 = dj[0].split(",");if (dj.length < 3)System.out.print("wrong number of points");String[] point2 = dj[1].split(",");String[] point3 = dj[2].split(",");if (point1.length == 2 && point2.length == 2 && point3.length == 2) {if (legal(point1[0]) && legal(point1[1]) && legal(point2[0]) && legal(point2[1]) && legal(point3[0])&& legal(point3[1])) {double x0 = Double.parseDouble(point1[0]);double y0 = Double.parseDouble(point1[1]);double x1 = Double.parseDouble(point2[0]);double y1 = Double.parseDouble(point2[1]);double x2 = Double.parseDouble(point3[0]);double y2 = Double.parseDouble(point3[1]);double a = Math.sqrt(Math.pow(y1 - y0, 2) + Math.pow(x1 - x0, 2));double b = Math.sqrt(Math.pow(y2 - y0, 2) + Math.pow(x2 - x0, 2));double c = Math.sqrt(Math.pow(y2 - y1, 2) + Math.pow(x2 - x1, 2));if (dj.length == 3 && a + b > c && a + c > b && b + c > a) {if (a == b || b == c || a == c)System.out.print("true ");elseSystem.out.print("false ");if (a == b && b == c)System.out.print("true ");elseSystem.out.print("false");}elseSystem.out.print("data error");if (dj.length > 3)System.out.print("wrong number of points");} elseSystem.out.print("Wrong Format");} elseSystem.out.print("Wrong Format");}void Two(String x) {String[] dj = x.split(" ");String[] point1 = dj[0].split(",");if (dj.length < 3)System.out.print("wrong number of points");String[] point2 = dj[1].split(",");String[] point3 = dj[2].split(",");if (point1.length == 2 && point2.length == 2 && point3.length == 2) {if (legal(point1[0]) && legal(point1[1]) && legal(point2[0]) && legal(point2[1]) && legal(point3[0])&& legal(point3[1])) {double x0 = Double.parseDouble(point1[0]);double y0 = Double.parseDouble(point1[1]);double x1 = Double.parseDouble(point2[0]);double y1 = Double.parseDouble(point2[1]);double x2 = Double.parseDouble(point3[0]);double y2 = Double.parseDouble(point3[1]);double a = Math.sqrt(Math.pow(y1 - y0, 2) + Math.pow(x1 - x0, 2));double b = Math.sqrt(Math.pow(y2 - y0, 2) + Math.pow(x2 - x0, 2));double c = Math.sqrt(Math.pow(y2 - y1, 2) + Math.pow(x2 - x1, 2));if (dj.length == 3 && a + b > c && a + c > b && b + c > a) {System.out.print(tran(a + b + c) + " "+ tran(0.5 * c * Math.abs((y2 - y1) * (x0 - x1) - (x2 - x1) * (y0 - y1))/ Math.sqrt(Math.pow((y1 - y2), 2) + Math.pow((x1 - x2), 2)))+ " " + tran((x0 + x1 + x2) / 3) + "," + tran((y0 + y1 + y2) / 3));} elseSystem.out.print("data error");if (dj.length > 3)System.out.print("wrong number of points");} elseSystem.out.print("Wrong Format");} elseSystem.out.print("Wrong Format");}void Three(String x) {String[] dj = x.split(" ");String[] point1 = dj[0].split(",");if (dj.length < 3)System.out.print("wrong number of points");String[] point2 = dj[1].split(",");String[] point3 = dj[2].split(",");if (point1.length == 2 && point2.length == 2 && point3.length == 2) {if (legal(point1[0]) && legal(point1[1]) && legal(point2[0]) && legal(point2[1]) && legal(point3[0])&& legal(point3[1])) {double x0 = Double.parseDouble(point1[0]);double y0 = Double.parseDouble(point1[1]);double x1 = Double.parseDouble(point2[0]);double y1 = Double.parseDouble(point2[1]);double x2 = Double.parseDouble(point3[0]);double y2 = Double.parseDouble(point3[1]);double a = Math.sqrt(Math.pow(y1 - y0, 2) + Math.pow(x1 - x0, 2));double b = Math.sqrt(Math.pow(y2 - y0, 2) + Math.pow(x2 - x0, 2));double c = Math.sqrt(Math.pow(y2 - y1, 2) + Math.pow(x2 - x1, 2));if (dj.length == 3 && a + b > c && a + c > b && b + c > a) {if (a*a + b*b < c*c||c*c+ b*b< a*a|| a*a +c*c < b*b)System.out.print("true false false");if (a*a + b*b ==c*c||c*c+ b*b==a*a|| a*a +c*c==b*b)//点14System.out.print("false true false");if (a*a + b*b >c*c&&c*c+ b*b> a*a&& a*a +c*c > b*b)System.out.print("false false true");} elseSystem.out.print("data error");if (dj.length > 3)System.out.print("wrong number of points");} elseSystem.out.print("Wrong Format");} elseSystem.out.print("Wrong Format");}void Four(String x) {String[] dj = x.split(" ");String[] point1 = dj[0].split(",");if (dj.length < 5)System.out.print("wrong number of points");String[] point2 = dj[1].split(",");String[] point3 = dj[2].split(",");String[] point4 = dj[3].split(",");String[] point5 = dj[4].split(",");if (!dj[1].equals(dj[0])) {if (point1.length == 2 && point2.length == 2 && point3.length == 2) {if (legal(point1[0]) && legal(point1[1]) && legal(point2[0]) && legal(point2[1]) && legal(point3[0])&& legal(point3[1]) && legal(point4[0]) && legal(point4[1]) && legal(point5[0])&& legal(point5[1])) {double x0 = Double.parseDouble(point1[0]);double y0 = Double.parseDouble(point1[1]);double x1 = Double.parseDouble(point2[0]);double y1 = Double.parseDouble(point2[1]);double x2 = Double.parseDouble(point3[0]);double y2 = Double.parseDouble(point3[1]);double x3 = Double.parseDouble(point4[0]);double y3 = Double.parseDouble(point4[1]);double x4 = Double.parseDouble(point5[0]);double y4 = Double.parseDouble(point5[1]);double a = Math.sqrt(Math.pow(y2 - y4, 2) + Math.pow(x2 - x4, 2));double b = Math.sqrt(Math.pow(y3 - y2, 2) + Math.pow(x3 - x2, 2));double c = Math.sqrt(Math.pow(y4 - y3, 2) + Math.pow(x4 - x3, 2));if (dj.length == 5 && a + b > c && a + c > b && b + c > a) {} elseSystem.out.print("data error");if (dj.length > 5)System.out.print("wrong number of points");} elseSystem.out.print("Wrong Format");} elseSystem.out.print("Wrong Format");} elseSystem.out.print("points coincide");}void Five(String x){} 
}View Cod

三、踩坑心得

1、第一次大作业

了解了数据类型转换,有自动类型转换和强制类型转换,容量小的可以往容量大的转换(隐式),但容量大的往容量小的转换则需要强制转换(显式)

float k =(float) (kg / 0.45359237);float m =(float)(meter / 0.0254);

当把任何基本类型和字符串值进行连接运算时,基本类型会被自动转成字符串类型,连接字符串,第二题要求找到奇数并输出,这样操作非常简单

String sum=""; 
if(a%2!=0)sum+=a;

字符串相关函数非常好用,如分割字符串substring(),length()

有时计算机计算会出现一小点误差,我们避免用'=='而用Math.abs(nextGuess - lastGuess)< 0.00001或许会得到想要的答案

2、第二次大作业

Character类里的isDigit和isLetter很好用,可以帮助判断字符,charAt()可以对字符串里的每位进行判断操作,非常方便

获取输入时,要注意nextLine()方法返回的是Enter键之前的所有字符,它可以得到带空格的字符串的。而next()会自动消去有效字符前的空格,只返回输入的字符,不能得到带空格的字符串

s.close()是一个好习惯。

3、第三次大作业

正则表达式的使用仍处于初级阶段,还需要认真学习

判断方法和第一二题差不多,只需稍加修改就可以应用到新的题目中,缩短了编程的时间,减少了重复思考与代码重写

四、改进建议

1.第三次作业里的第二三题,代码的修改再次运用,虽然减少了重复思考的时间,但代码过长,后面要多进行实践练习

2.圈复杂度过高,if嵌套太多次,应该可以通过一个计算方法,找出相应数字的特性,通过计算得出一个数字再进行判断,后续要学习培养更好的书写习惯

3.第三次作业的第三题的第五项,仍然没找到合适的算法,希望后续学习可以将其补上

五、总结

       1.这三次作业难度逐渐递增,帮助我们很快的从原先C语言的面相过程跳转为现在JAVA的面相对象,初步的了解了面相对象的思考方式。但是对于每个对象究竟应该有什么属性,以及属性的公共或私有形式、每个对象具体方法的考量都不完善,后续应该加强思考如何使设计的对象有更强的可塑性,可以更方便快捷的在下次使用时完成修改。

       2.在对于JAVA庞大的类库以及相关功能还需要进一步的了解与学习,提高工作效率,方便后续功能更好更快捷的实现。

       3.作业与实验现下的难度与题量都很适合练习,可以很好地复习老师讲授的知识点,除去第三次作业7-3的某点算法上遇到了困难,其他都能有想法,写得出来代码。再有,就是希望能看下pta高分的同学的代码,来学习一下别人的优点


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部