ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

第一次写博客

2022-04-10 19:34:33  阅读:150  来源: 互联网

标签:题目 num1 int 作业 第一次 substring num 博客


前言

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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有