首页 > 其他分享 >题目集1~3的总结

题目集1~3的总结

时间:2022-10-02 21:14:17浏览次数:54  
标签:总结 题目 String indexOf 作业 奇偶校验 error 数据

  • 前言:

前两次大作业题目主要是对java基本语法的考察,例如:基础类型的使用以及String类方法的使用。第三次大作业则开始进入到面向对象程序设计的范畴,考察了类的设计。总体来说题目量适中,难度循序渐进,较为适合在这之前从未接触过面向对象程序设计的新手。
  • 设计与分析:

    • 第二次作业7-2  

 

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

 

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        String s = input.nextLine();
        if(s.length() < 11 || s.matches("1+"))
            System.out.println("null data");
        else {
            int count = 1;
            for(int i = s.indexOf('0');s.substring(i).matches(".*0+.*") && i + 10 < s.length();i = s.indexOf('0',i) + 11) {
                boolean end = (s.charAt(s.indexOf('0',i) + 10) == '1');
                int count1 = 0;
                boolean parityCheck = true;
                for(int j = s.indexOf('0',i) + 1;j <= s.indexOf('0',i) + 9;j++) {
                    if(s.charAt(j) == '1')
                        count1++;
                    parityCheck = (count1 % 2 == 1);
                }
                System.out.print(count++ + ":");
                if(end && parityCheck)
                    System.out.println(s.substring(s.indexOf('0',i) + 1,s.indexOf('0',i) + 9));
                else if(!end && !parityCheck)
                    System.out.println("validate error");
                else if(!end && parityCheck)
                    System.out.println("validate error");
                else if(end && !parityCheck)
                    System.out.println("parity check error");
                
            }
        }
    }
}

 

 

 

这一次作业完全按照面向过程方法实现,主要是对正则表达式的应用和String类方法的应用,仅有一个主类和一个主方法,因为整体难度较为简单,所以没有采用面向对象思想进行编程。但是从ScoureMonitor生成结果来看应该对代码进行一定程度的拆分以减少复杂度

 

 

 

 

 

    • 第三次作业7-1

 

 

 正式进入面向对象程序设计的第一道题,

 

 

 

 

    • 第三次作业7-2

 

 

    • 第三次作业7-3

 

 

 

 

 

 

 

  • 踩坑心得:

 

  • 改进建议:

 

  • 总结:

 

 

标签:总结,题目,String,indexOf,作业,奇偶校验,error,数据
From: https://www.cnblogs.com/Zexu3366/p/16749276.html

相关文章