ICode9

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

BLOG-1

2022-04-09 23:32:33  阅读:185  来源: 互联网

标签:int System month BLOG year public day


一、前言

大一下学期开始学Java这门课程,因为刚开始学Java,所以有很多不懂的地方,代码也写的比较混乱,逻辑性差。个人感觉Java比c语言要更难一些,Java和c语言也有很大的区别。c语言核心为数据结构+算法,c语言是面向过程的语言,执行效率高;而Java是面向对象的语言,执行效率没有c语言高。

但是面向对象有以下优点:
1.可复用性(保证低耦合)
2.可扩展性(功能可扩展)
3.可维护性

语言介绍:Java是一门面向对象的编程语言,被设计用于互联网的分布式环境。Java具有类似于C++语言的“形式和感觉”,但它要比C++语言更易于使用,而且在编程时彻底采用了一种“以对象为导向”的方式。Java具有三大特性,分别是封装性,继承和多态。

Java开发工具:可以使用Windows记事本或写字板创建Java程序,之后从命令窗口编译、运行程序,也可以使用Eclipse编译器进行编译。

二、总结题目集1-3

(1)前言:

1.题目集01共有9道题目,主要考察的是Java语言的基础,包括输入,输出,浮点数的使用,数组求和,分情况讨论,字符串等知识点,难度不算特别难,还可以接受。

2.题目集02共有3道题目,但是难度相对于01有很大的提升,主要考察字母-数字转换,字符串的使用以及不同类型的输出。

3.题目集03共有四道题目,我个人感觉难度直接上升了一大截,主要考察用Java中的“类"来解决问题。

(2)设计与分析:

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

import java.util.Scanner;
public class Main{

    public static void main(String[] args) {
        // TODO 自动生成的方法存根
        Scanner in=new Scanner(System.in);
        String s=in.nextLine();
        int n=0;
        int count=1;
        int l=0;
        int m=0;
        for(int i=0;i<s.length();i++)
        {
            if(l==0) 
            {
                    if(s.charAt(i)=='0')
                    {    
                        m=1;
                        int j=i;
                        if(s.length()-i<11)
                        {
                          System.out.print("null data");
                          System.exit(0);
                        }
                        else
                        {
                            int k=i+8;
                            int sum=0;
                         for(;j<k;j++)
                         {
                            if(s.charAt(j+1)=='0')
                            {
                                sum=sum+1;
                            }
                         }
                        if(((sum%2==1&&s.charAt(i+9)=='1')||(sum%2==0&&s.charAt(i+9)=='0'))&&s.charAt(i+10)=='1')
                            {
                                System.out.println(count+":"+"parity check error");
                                i=i+10;
                            }
                        else 
                            if(s.charAt(i+10)!='1'&&((sum%2==1&&s.charAt(i+9)=='0')||(sum%2==0&&s.charAt(i+9)=='1')))
                            {
                                System.out.println(count+":"+"validate error");    
                                i=i+10;
                            }
                        else 
                            if(((sum%2==1&&s.charAt(i+9)=='1')||(sum%2==0&&s.charAt(i+9)=='0'))&&s.charAt(i+10)!='1')
                                {
                                    System.out.println(count+":"+"validate error");
                                    i=i+10;
                                }
                         else 
                              if(((sum%2==1&&s.charAt(i+9)=='0')||(sum%2==0&&s.charAt(i+9)=='1'))&&s.charAt(i+10)=='1')
                                            {
                                                System.out.println(count+":"+s.substring(i+1,i+9));
                                                i=i+10;
                                            }
                           count=count+1;
                           l=1;
                            }
                    }
                    
                    }
        else
                        if(l==1)
                        {
                            if(s.charAt(i)=='0')
                        {    
                                int j=i;
                                if(s.length()-i<11)
                                {
                                  System.exit(0);
                                }
                                else
                                {        
                                    int k=i+8;
                                    int sum=0;
                                 for(;j<k;j++)
                                     {
                                        if(s.charAt(j+1)=='0')
                                        {
                                            sum=sum+1;
                                        }
                                     }
                                 if(((sum%2==1&&s.charAt(i+9)=='1')||(sum%2==0&&s.charAt(i+9)=='0'))&&s.charAt(i+10)=='1')
                                    {
                                        System.out.println(count+":"+"parity check error");
                                        i=i+10;
                                    }
                                else 
                                    if(s.charAt(i+10)!='1'&&((sum%2==1&&s.charAt(i+9)=='0')||(sum%2==0&&s.charAt(i+9)=='1')))
                                    {
                                        System.out.println(count+":"+"validate error");    
                                        i=i+10;
                                    }
                                else 
                                    if(((sum%2==1&&s.charAt(i+9)=='1')||(sum%2==0&&s.charAt(i+9)=='0'))&&s.charAt(i+10)!='1')
                                        {
                                            System.out.println(count+":"+"validate error");
                                            i=i+10;
                                        }
                                 else 
                                      if(((sum%2==1&&s.charAt(i+9)=='0')||(sum%2==0&&s.charAt(i+9)=='1'))&&s.charAt(i+10)=='1')
                                                    {
                                                        System.out.println(count+":"+s.substring(i+1,i+9));
                                                        i=i+10;
                                                    }
                                                        count=count+1;
                                                        }
                                    }
                            
                                }
                        }
        if(m==0)
             System.out.print("null data");
        }
    }

2.题目集3:7-1 用类解一元二次方程式:定义一个代表一元二次方程ax2+bx+c=0的类QuadraticEquation,其属性为三个系数a、b、c(均为私有属性),类中定义的方法参考main方法中的代码。

import java.util.Scanner;

public class Main {
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);

        double a = Double.parseDouble(input.next());
        double b = Double.parseDouble(input.next());
        double c = Double.parseDouble(input.next());
        
        if(a == 0){
            System.out.println("Wrong Format");
            System.exit(0);
        }
        
        //create a QuadraticEquation object
        QuadraticEquation equation = new QuadraticEquation(a, b, c);
        //get value of b * b - 4 * a * c
        double discriminant = equation.getDiscriminant();
        
        System.out.println("a=" + equation.getA() +
                ",b=" + equation.getB() + 
                ",c=" + equation.getC()+":");

        if (discriminant < 0) {
          System.out.println("The equation has no roots.");
        }
        else if (discriminant == 0)
        {
          System.out.println("The root is " + 
                  String.format("%.2f", equation.getRoot1()));
        }
        else // (discriminant >= 0)
        {
          System.out.println("The roots are " + 
                  String.format("%.2f", equation.getRoot1()) 
            + " and " +  String.format("%.2f", equation.getRoot2()));
        }
    }
}
class QuadraticEquation{
    Scanner in = new Scanner(System.in);
    private double a;
    private double b;
    private double c;
    public QuadraticEquation(double a, double b, double c) {
        this.a=a;
        this.b=b;
        this.c=c;
        // TODO 自动生成的构造函数存根
    }
    public double getDiscriminant() {
            double getDiscriminant;
            getDiscriminant=b*b-4*a*c;
            return getDiscriminant;
        }
    public double getA() {
        // TODO 自动生成的方法存根
        return a;
    }
    public double getB() {
        // TODO 自动生成的方法存根
        return b;
    }
    public double getC() {
        // TODO 自动生成的方法存根
        return c;
    }
    public Object getRoot1() {
        double Root1=(-b+Math.sqrt((b*b-4*a*c)))/(2*a);
        return Root1;
    }
    public Object getRoot2() {
        double Root2=(-b-Math.sqrt((b*b-4*a*c)))/(2*a);
        return Root2;
    }
    
    
}

3.题目集3:7-2 日期类设计 

参考题目集二中和日期相关的程序,设计一个类DateUtil,该类有三个私有属性year、month、day(均为整型数),其中,year∈[1820,2020] ,month∈[1,12] ,day∈[1,31] , 除了创建该类的构造方法、属性的getter及setter方法外,需要编写如下方法:

public boolean checkInputValidity();//检测输入的年、月、日是否合法
public boolean isLeapYear(int year);//判断year是否为闰年
public DateUtil getNextNDays(int n);//取得year-month-day的下n天日期
public DateUtil getPreviousNDays(int n);//取得year-month-day的前n天日期
public boolean compareDates(DateUtil date);//比较当前日期与date的大小(先后)
public boolean equalTwoDates(DateUtil date);//判断两个日期是否相等
public int getDaysofDates(DateUtil date);//求当前日期与date之间相差的天数
public String showDate();//以“year-month-day”格式返回日期值

应用程序共测试三个功能:

  1. 求下n天
  2. 求前n天
  3. 求两个日期相差的天数
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int year = 0;
        int month = 0;
        int day = 0;

        int choice = input.nextInt();

        if (choice == 1) { // test getNextNDays method
            int m = 0;
            year = Integer.parseInt(input.next());
            month = Integer.parseInt(input.next());
            day = Integer.parseInt(input.next());

            DateUtil date = new DateUtil(year, month, day);

            if (!date.checkInputValidity()) {
                System.out.println("Wrong Format");
                System.exit(0);
            }

            m = input.nextInt();

            if (m < 0) {
                System.out.println("Wrong Format");
                System.exit(0);
            }

            System.out.print(date.getYear() + "-" + date.getMonth() + "-" + date.getDay() + " next " + m + " days is:");
            System.out.println(date.getNextNDays(m).showDate());
        } else if (choice == 2) { // test getPreviousNDays method
            int n = 0;
            year = Integer.parseInt(input.next());
            month = Integer.parseInt(input.next());
            day = Integer.parseInt(input.next());

            DateUtil date = new DateUtil(year, month, day);

            if (!date.checkInputValidity()) {
                System.out.println("Wrong Format");
                System.exit(0);
            }

            n = input.nextInt();

            if (n < 0) {
                System.out.println("Wrong Format");
                System.exit(0);
            }

            System.out.print(
                    date.getYear() + "-" + date.getMonth() + "-" + date.getDay() + " previous " + n + " days is:");
            System.out.println(date.getPreviousNDays(n).showDate());
        } else if (choice == 3) {    //test getDaysofDates method
            year = Integer.parseInt(input.next());
            month = Integer.parseInt(input.next());
            day = Integer.parseInt(input.next());

            int anotherYear = Integer.parseInt(input.next());
            int anotherMonth = Integer.parseInt(input.next());
            int anotherDay = Integer.parseInt(input.next());

            DateUtil fromDate = new DateUtil(year, month, day);
            DateUtil toDate = new DateUtil(anotherYear, anotherMonth, anotherDay);

            if (fromDate.checkInputValidity() && toDate.checkInputValidity()) {
                System.out.println("The days between " + fromDate.showDate() + 
                        " and " + toDate.showDate() + " are:"
                        + fromDate.getDaysofDates(toDate));
            } else {
                System.out.println("Wrong Format");
                System.exit(0);
            }
        }
        else{
            System.out.println("Wrong Format");
            System.exit(0);
        }        
    }
}
class DateUtil{
    private int year;
    private int month;
    private int day;
    int []a=new int[] {0,31,28,31,30,31,30,31,31,30,31,30,31};
    int []b=new int[] {0,31,29,31,30,31,30,31,31,30,31,30,31};
    public int getYear() {
        return year;
    }
    public int getMonth() {
        return month;
    }
    public int getDay() {
        return day;
    }
    public DateUtil(int year, int month, int day) {
        this.year=year;
        this.month=month;
        this.day=day;
    }
    public boolean isLeapYear(int year){
        if((year%4==0&&year%100!=0)||(year%400==0)) {
            return true;
        }
        else {
            return false;
        }
    }
    public boolean checkInputValidity() {
        int year=this.year;
        int month=this.month;
        int day=this.day;
        if((year>=1820&&year<=2020)&&(month==1||month==3||month==5||month==7||month==8||month==10||month==12)&&(day>=1&&day<=31))
        {
        return true;
        }
        else if((year>=1820&&year<=2020)&&(month==4||month==6||month==9||month==11)&&(day>=1&&day<=30))
        {
        return true;
        }
        else if((year>=1820&&year<=2020)&&month==2&&(day>=1&&day<=29)&&((year%4==0&&year%100!=0)||(year%400==0)))
        {
        return true;
        }
        else if((year>=1820&&year<=2020)&&month==2&&(day>=1&&day<=28)&&((year%4!=0||year%100==0)||(year%400!=0)))
        {
        return true;
        }
    else
    {
        return false;
    }
}
    public DateUtil getNextNDays(int m) {
        int year=this.year;
        int month=this.month;
        int day=this.day;
        int []a=new int[] {0,31,28,31,30,31,30,31,31,30,31,30,31};
        if((year%4==0&&year%100!=0)||(year%400==0))
      {
        a[2]=29;
      }
        for(int i=0;i<m;i++)
        {
            day=day+1;
            if(day>a[month])
            {
                day=1;
                month++;
                if(month>12)
                {
                    month=1;
                    year=year+1;
                
                if((year%4==0&&year%100!=0)||(year%400==0))
                {
                    a[2]=29;
                }
                else
                {
                    a[2]=28;
                }
            }
        }
    }
        return new DateUtil(year, month, day);
}
    public DateUtil getPreviousNDays(int n) {
        int year=this.year;
        int month=this.month;
        int day=this.day;
        int []a=new int[] {0,31,28,31,30,31,30,31,31,30,31,30,31};
        if((year%4==0&&year%100!=0)||(year%400==0))
           {
            a[2]=29;
           }
        int j=0;
        for(j=0;j<n;j++)
        {
            day=day-1;
            if(day<1)
            {
                month=month-1;
                day=a[month];
                if(month<1)
                {
                    year=year-1;
                    month=12;
                    day=31;
                if((year%4==0&&year%100!=0)||(year%400==0))
                {
                    a[2]=29;
                }
                else
                {
                    a[2]=28;
                }
            }
                
        }
    }
        return new DateUtil(year, month, day);
    }
    public boolean compareDates(DateUtil date) {
        if(year>date.year)
        {
            return true;
        }
        else if((year==date.year)&&(month>date.month))
        {
            return true;
        }
        else if(((year==date.year)&&(month==date.month))&&(day>date.day))
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    public boolean equalTwoDates(DateUtil date)//判断两个日期是否相等
    {
        if(((year==date.year)&&(month==date.month))&&(day==date.day))
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    public String showDate() {
        return year+"-"+month+"-"+day;
    }
    public int getDaysofDates(DateUtil toDate) {
        int days=0;
        for(int i=year;i<toDate.year;i++)
        {
            if((i%4==0&&i%100!=0)||(i%400==0))
            {
                days=days+366;
            }
            else
            {
                days=days+365;
            }
        }
        for(int j=1;j<toDate.month;j++)
        {
            if(j==1||j==3||j==5||j==7||j==8||j==10)
            {
                days=days+31;
            }
            else if(j==4||j==6||j==9||j==11)
            {
                days=days+30;
            }
            else if(j==2&&((toDate.year%4==0&&toDate.year%100!=0)||(toDate.year%400==0)))
            {
                days=days+29;
            }
            else
            {
                days=days+28;
            }
        }
        days=days+toDate.day;
        
        int dayss=0;
        for(int k=1;k<month;k++)
        {
            if(k==1||k==3||k==5||k==7||k==8||k==10)
            {
                dayss=dayss+31;
            }
            else if(k==4||k==6||k==9||k==11)
            {
                dayss=dayss+30;
            }
            else if(k==2&&((year%4==0&&year%100!=0)||(year%400==0)))
            {
                dayss=dayss+29;
            }
            else
            {
                dayss=dayss+28;
            }
          
        }
         dayss=dayss+day;
        
        return (days-dayss);
    }
}

 



标签:int,System,month,BLOG,year,public,day
来源: https://www.cnblogs.com/Cjq666/p/16124154.html

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

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

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

ICode9版权所有