第一次题目总结

前言:

本次发布的题目集1-3,主要是对类和对象的使用的考察,题量比较适中,难度设置合理,如风扇类设计比较简单,整体就是为了熟悉类的使用,后续的题目加入了一些要求,加强对类和对象的熟悉,难点集中在每次的答题系统迭代上,非常考验类之间的关联使用。每次题目集都会有一些简单的基础题目来熟悉一下操作,然后就是十分需要思考的迭代题目。

分析与设计:

题目集一:

设计一个风扇Fan类

题目很简单,就是设计一个类根据输入的数据输出相应的信息,也没有难点

代码如下:

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        int speed = scanner.nextInt();

        boolean on = scanner.nextBoolean();

        double radius = scanner.nextDouble();

        String color = scanner.next();

        Fan fan1= new Fan();

        Fan fan2 = new Fan(speed,on,radius,color);

        System.out.println(fan2);

    }

}

class Fan{

    public int getSpeed() {

        return speed;

    }

 

    public void setSpeed(int speed) {

        this.speed = speed;

    }

 

    public boolean isOn() {

        return on;

    }

 

    public void setOn(boolean on) {

        this.on = on;

    }

 

    public double getRadius() {

        return radius;

    }

 

    public void setRadius(double radius) {

        this.radius = radius;

    }

 

    public String getColor() {

        return color;

    }

 

    public void setColor(String color) {

        this.color = color;

    }

 

    private int speed;

    private boolean on;

    private double radius;

    private String color;

    public Fan() {

        speed = 1;

        on = false;

        radius = 5;

        color = "white";

    }

    public Fan(int fanSpeed,boolean fanOn,double fanRadius,String fanColor) {

        this.speed=fanSpeed;

        this.on=fanOn;

        this.radius=fanRadius;

        this.color=fanColor;

    }

 

 

    public String toString()  {

        if (!isOn()){

            return "-------\n" +

                    "Default\n" +

                    "-------\n" +

                    "speed 1\n" +

                    "color white\n" +

                    "radius 5.0\n" +

                    "fan is off\n" +

                    "-------\n" +

                    "My Fan\n" +

                    "-------\n"+

                    "speed " +getSpeed()+

                    "\ncolor " +getColor()+

                    "\nradius " +getRadius()+

                    "\nfan is off";

        }

        else {

            return "-------\n" +

                    "Default\n" +

                    "-------\n" +

                    "speed 1\n" +

                    "color white\n" +

                    "radius 5.0\n" +

                    "fan is off\n" +

                    "-------\n" +

                    "My Fan\n" +

                    "-------\n"+

                    "speed " +getSpeed()+

                    "\ncolor " +getColor()+

                    "\nradius " +getRadius()+

                    "\nfan is on";

        }

    }

}

 类和对象的使用

也是很简单,就是要将信息存在对象中然后调用方法输出

代码如下:

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        String name= scanner.next();

        String sex =scanner.next();

        int age = scanner.nextInt();

        String major =scanner.next();

        String id = scanner.next();

        Student student = new Student(name,sex,id,age,major);

        student.printInfo();

    }

}

class Student{

    private String stName;

    private String stSex;

    private String stStID;

    private int stAge;

    private String stMajor;

    public Student() {

    }

    public Student(String name,String sex,String studentID,int age,String major){

      this.stName=name;

      this.stSex=sex;

      this.stStID=studentID;

      this.stAge= age;

      this.stMajor=major;

    }

 

    public String getStName() {

        return stName;

    }

 

    public void setStName(String stName) {

        this.stName = stName;

    }

 

    public String getStSex() {

        return stSex;

    }

 

    public void setStSex(String stSex) {

        this.stSex = stSex;

    }

 

    public String getStStID() {

        return stStID;

    }

 

    public void setStStID(String stStID) {

        this.stStID = stStID;

    }

 

    public int getStAge() {

        return stAge;

    }

 

    public void setStAge(int stAge) {

        this.stAge = stAge;

    }

 

    public String getStMajor() {

        return stMajor;

    }

 

    public void setStMajor(String stMajor) {

        this.stMajor = stMajor;

    }

    public String toString(){

      return "姓名:" +getStName() + ",性别:"+ getStSex()+",学号:"+getStStID()+",年龄:"+getStAge()+",专业:"+getStMajor();

    }

    public void printInfo(){

     System.out.println(toString());

    }

}

答题判断程序比较难,输入的字符串比较复杂,如何拆分以及拆分后如何处理比较麻烦

Topic[] topics = new Topic[num];
Answer[] answers = new Answer[num];
Judgment[] judgments = new Judgment[num];

我尝试了先统一存到数组里然后用正则表达式拆分

for (String part : parts) {
if (part.startsWith("N:")) {
this.questionNumber = part.substring(2).trim();
} else if (part.startsWith("Q:")) {
this.question = part.substring(2).trim();
} else if (part.startsWith("A:")) {
this.answer = part.substring(2).trim();
}
}

 踩坑心得:

主要踩坑点就在答题程序上,处理比较麻烦,字符串的拆分和拆分后的处理比较容易出现错误

 

总结:

通过本次题目集,不仅能掌握类和对象的基本使用方法,还能深入了解面向对象编程的核心概念。在探索实用的工具类的使用过程中,学会如何创建自定义类以及如何利用继承、封装和多态等特性来构建更加复杂和灵活的程序。这些知识和技能不仅可以帮助更好地组织和管理代码,还能提高代码的可重用性、可维护性和可扩展性。

posted @ 2024-04-21 21:59  dgzs  阅读(45)  评论(0)    收藏  举报