其他分享
首页 > 其他分享> > 第一次写博客

第一次写博客

作者:互联网

前言

这三次作业难度一次比一次难,运用的知识不再拘于以前所学的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