第一次写博客
作者:互联网
前言
这三次作业难度一次比一次难,运用的知识不再拘于以前所学的java知识,渐渐需要运用课本以外的知识,比如说第三次作业需要运用正则运算,第二次作业需要类的划分,对个人的知识需求大大增加。而且需要考虑的条件也比较多,代码行数比较大,需要个人比较细心,多做注释,否则容易丢三落四的。在这三次作业中,其实本人也收获良多的。比如像以前是很少运用多个类划分,总是将代码放在一个类里面,导致写到后面,就忘记前面,总是又需要理清自己思路。然后第二个点就是多在自己的代码后面做出注释,因为题目比较难,不是短时间可以想出来的,等过后突然有想法,又忘记前面的所需条件储放位置,学会注释可大大减少寻找所需代码的时间。不过在这三次作业中也存在一些bug。
比如在定义字符串的时候,需要对变量进行初始化,否则容易报错,初始化是为了内存存储和地址引用。
import java.util.Scanner;
public class Main {
public static void main(String[] args){
String num="weclome to China";
int sum=num.length();
String num1,num2;
int t=1;
if(t==1){
num1=num.substring(0,5);
num2=num.substring(5,sum);
}
if(t>1){
num1=num.substring(0,4);
num2=num.substring(4,sum);
}
System.out.println(num1);
}
}
报错信息如下:
Exception in thread "main" java.lang.Error: Unresolved compilation problem: The local variable num1 may not have been initialized at homework/homework.homework1.main(homework1.java:17)
又比如在做出字符串的比较时,不能运用“==”,需要运用equals函数;获取整行的信息需要用input.nextLine()而不是input.next(),input.next()遇到空格会停止,导致作业中一个测试点总是未过。
第一次作业
第一次作业整体难度是这三次作业难度最低的,题目比较简单,所以用时很短可以完成。不过还是需要注意点就是关于字符串函数的运用和调用,好几次运用错误导致题目完成时间变长。不过虽然第一次作业比较简单,但是个人来说还是比较有意义,可以让我们迅速熟悉java的知识点,并且迅速掌握。
第二次作业
在第二次作业中,7-1,7-3题目相对来说比较容易,自己可以完成,但是当完成后,再度回过来看7-2时,遇到些困难,7-2是串口字符解析的题目,题目信息量比较大,看题目弄清意思就花费了比较多的时间。
7-2要求我们编写程序,模拟串口接受处处理程序,对输入来的字符串进行解析.
有以下条件需要注意:
1.如有多个数据,每个数据单独一行显示。
2.若数据不足11位或者输入数据全1没有起始位,则输出"null data",
3.若某个数据的结束符不为1,则输出“validate error”。
4.若某个数据奇偶校验错误,则输出“parity check error”。
5.若数据结束符和奇偶校验均不合格,输出“validate error”。
在写本题目时,首先过滤掉空闲、起始、结束以及奇偶校验位之后的数据,数据之前加上序号和英文冒号。然后需要检查字符串中‘0’的位置,这里我运用substring函数,这样可以快速搜索出所需目标,然后我首先考虑字符串长度,相对来说,这个很容易,我一般从简单的考虑,然后再深入复杂的考虑,再考虑结束符不为1和数据奇偶校验错误的情况,这里要注意的是题目要求当数据结束符和奇偶校验均不合格的时候,另做输出,所以要对这个进行另外考虑,当考虑完其他错误输入的时候,方可以正常输出。本题难点在于该怎么将字符串怎么划分,并对划分后的进行讨论。
第三次作业
第三次作业可谓是这三次作业中最难的,第三次作业总共有三道题目,互相有关联,难度一题比一题大,分别是关于点,线,面的题目,虽然没有完全做出来,不过大概思路还是比较清晰。
8-1题目要求计算两点之间的距离。
有以下几点需要注意:
1. 若输入格式非法,输出"Wrong Format"。
2.若输入格式合法但坐标点的数量超过两个,输出“wrong number of points”。
本题难度不在计算,而是在讨论其非法输入,因为输入的字符串包含空格和逗号,且以1,1 0,0表示坐标a,b,再是非法输入有可能包含两个逗号连在一起,两个空格连在一起等其他一系列的需要考虑的因素,所以需要多重考虑。
下图为8-1UML图:
1.首先,将字符串储存并且划分
String num = input.nextLine(); int sum=num.length(); int i=0,t=0,j=0,k=0; int m=0,n=0; double c,d,e,a; String num1="",num2=""; int[] b=new int[100]; int[] f=new int[100]; for(i=0;i<sum;i++){ if(num.charAt(i)==' ') { b[j]=i; j++; t++; } } if(t==1){ num1=num.substring(0,b[0]); num2=num.substring(b[0]+1,sum); } if(t>1){ num1=num.substring(0,b[0]); num2=num.substring(b[0]+1,b[1]); }
2.然后将每个坐标再度细化成x,y
int sum1=num1.length(); int sum2=num2.length(); for(i=0;i<sum1;i++){ if(num1.charAt(i)==','){ f[0]=i; } } for(i=0;i<sum2;i++){ if(num2.charAt(i)==',') f[1]=i; } String num3=num1.substring(0,f[0]); int sum3=num3.length(); String num4=num1.substring(f[0]+1,sum1); int sum4=num4.length(); String num5=num2.substring(0,f[1]); int sum5=num5.length(); String num6=num2.substring(f[1]+1,sum2); int sum6=num6.length();
3.判断“+”或“-”是否在首字符(以下为单个个例)
for(i=0;i<sum3;i++){ if(num3.charAt(i)=='+'||num3.charAt(i)=='-') m++; } if(m==1) { if(num3.charAt(0)=='+'||num3.charAt(0)=='-') { } else n=1; } if(m>1) n=1; m=0;
4.字符串转变为数字(以下为单个个例)
if(num3.charAt(0)=='+') num3=num3.substring(1,sum3); if(num3.charAt(0)=='-'){ k=1; num3=num3.substring(1,sum3); } if(k==0) a=Double.parseDouble(num3); else{ a=Double.parseDouble(num3); a=0-a; }
5.计算
public static double add(double m1, double m2) { double t=0; if(m1<0&&m2>0) t=Math.abs(m1)+m2; if(m1<0&&m2<0) t=Math.abs(m2)-Math.abs(m1); if(m1>0&&m2>0) t=m1-m2; if(m1==0&&m2<0) t=Math.abs(m2); if(m1==0&&m2>0) t=Math.abs(m2); if(m1>0&&m2==0) t=Math.abs(m1); if(m1<0&&m2==0) t=Math.abs(m1); if(m1==0&&m2==0) t=0; return t; } }
BUG的情况:
刚开始用input.next()接受不完全,需要用input.nextLine().(以下为错误的演示)
import java.until.Scanner; public class Main{ public static void main(String[] args){ Scanner input=new Scanner(System.in); String a=input.next(); System.out.println(a); } }
输入和输出
0,0 1,1 0,0
第三次作业的8-2,8-3是以8-1为基础,相较于8-1,肯定更加难,因为8-2,8-3得分1比较少,没啥思路,所以不便称述。
心得体会
第二次作业,第三次作业写的比较潦草,无序。当写第二次作业时,比较赶,所以没写多少,所以这提醒我要尽早写完作业,不要养成拖拉的毛病。然后就是多给自己创建的变量注释,本人在这方面吃了大亏,最后不要将所有代码放在一个类,这样做,别人看不懂,自己也很容易看晕。不过经历这几次作业后,我对字符串函数的调用比较熟悉,然后也掌握了正则表达式等书本上以外的知识,也算收获颇多。
标签:题目,num1,int,作业,第一次,substring,num,博客 来源: https://www.cnblogs.com/fjlnb/p/16124312.html