22201409-黄明OOP题目集6-8作业总结 OOP题目集6-8作业总结

发布时间 2023-06-28 11:35:36作者: sun__moon

OOP题目集6-8作业总结

一、前言

      作为一个第一次写博客的萌新,有什么不足请各位佬指正,经过了几周的上课学习,我掌握了Java语言的基本语法,能够开始写一些简单的题目,随着不断的学习,经过这几次题目集的训练,我算是入门了java这门oop。

  这三次的题目集的题目集难度逐次提升,题量适中,适合新手来进行训练,在第一次作业里,前面几题简单考察了一下变量定义、赋值、运算、选择分支语句和基本的输入输出等基础知识点,熟悉了一下Java的编程环境之后,就开始考察字符串运算的相关知识点,整体难度不大,但是过程一开始有点折磨,毕竟刚上手写java,ac的道路艰苦。第二次作业一上来感觉难度上了几个层次,前面两道题目直接写一个菜单程序,接着是一个日期的基本使用,最后一道也是一个比较难的动态规划,整体难度对于刚接触oopd的萌新我来说,不可谓不是一个巨大的挑战。第三次作业第一个依旧是爆炸的菜单程序设计,接着两道题目去重要用到set数据结构,接下来的单词统计也是用到了arrays.sort以及set去重,好在有一道简单的分秒转换题目来聊以自慰,最后依旧是日期转换结尾。

二、设计与分析

题目7-2:

 

某饭店提供4种菜,每种菜品的基础价格如下:
西红柿炒蛋 15
清炒土豆丝 12
麻婆豆腐 12
油淋生菜 9

 

设计点菜计价程序,根据输入的订单,计算并输出总价格。
订单由一条或多条点菜记录组成,每条记录一行,最后以"end"结束
每条点菜记录包含:菜名、份额两个信息。
份额可选项包括:1、2、3,分别代表小、中、大份)

 

不同份额菜价的计算方法:
小份菜的价格=菜品的基础价格。
中份菜的价格=菜品的基础价格1.5。
小份菜的价格=菜品的基础价格2。
如果计算出现小数,按四舍五入的规则进行处理。

 

参考以下类的模板进行设计:
菜品类:对应菜谱上一道菜的信息。
Dish {
String name;//菜品名称
int unit_price; //单价
int getPrice(int portion)//计算菜品价格的方法,输入参数是点菜的份额(输入数据只能是1/2/3,代表小/中/大份)
}

 

菜谱类:对应菜谱,包含饭店提供的所有菜的信息。
Menu {
Dish[] dishs ;//菜品数组,保存所有菜品信息
Dish searthDish(String dishName)//根据菜名在菜谱中查找菜品信息,返回Dish对象。
}

 

点菜记录类:保存订单上的一道菜品记录
Record {
Dish d;//菜品
int portion;//份额(1/2/3代表小/中/大份)
int getPrice()//计价,计算本条记录的价格
}

 

订单类:保存用户点的所有菜的信息。
Order {
Record[] records;//保存订单上每一道的记录
int getTotalPrice()//计算订单的总价
Record addARecord(String dishName,int portion)
//添加一条菜品信息到订单中。
}

 

输入格式:

 

每条点菜记录的格式:
菜名+空格(英文)+份额
注:份额可输入(1/2/3), 1代表小份,2代表中份,3代表大份。
最后一条记录以“end”结束。

 

输出格式:

 

订单上所有菜品的总价(整数数值),每份菜
如果订单中包含不能识别的菜名,则在总价之前输出“** does not exist”,**是不能识别的菜名

 

输入样例:

 

在这里给出一组输入。例如:

 

麻婆豆腐 2
西红柿炒蛋 3
end

 

输出样例:

 

在这里给出相应的输出。例如:

 

48

 

输入样例1:

 

订单中包含不存在的菜品记录。例如:

 

麻婆豆腐 2
炒脆肚 2
西红柿炒蛋 3
end

 

输出样例1:

 

在这里给出相应的输出。例如:

炒脆肚 does not exist
48

这是我的代码:
复制代码
import  java.util.Scanner;
public class Main{
    public static void main(String[] args) {

        Scanner input=new Scanner(System.in);
        String[] s=new String[5];
        s[1]="西红柿炒蛋";
        s[2]="清炒土豆丝";
        s[3]="麻婆豆腐";
        s[4]="油淋生菜";
        String a=input.next();
        int size1;
        int count=0;
        String k="end";
        while(a.compareTo(k)!=0){
            size1=input.nextInt();
            int pd=0;
            for(int i=1;i<5;i++){
                if(s[i].equals(a))
                    pd=1;
            }
            if(pd==0)
                System.out.println(a+" does not exist");
            else {
                if(s[1].equals(a))
                {
                    if(size1==1)
                        count+=15;
                    if(size1==2)
                        count+=Math.ceil(15*1.5);
                    if(size1==3)
                        count+=15*2;
                }
                if(s[2].equals(a))
                {
                    if(size1==1)
                        count+=12;
                    if(size1==2)
                        count+=12*1.5;
                    if(size1==3)
                        count+=12*2;
                }
                if(s[3].equals(a))
                {
                    if(size1==1)
                        count+=12;
                    if(size1==2)
                        count+=12*1.5;
                    if(size1==3)
                        count+=12*2;
                }
                if(s[4].equals(a))
                {
                    if(size1==1)
                        count+=9;
                    if(size1==2)
                        count+=Math.ceil(9*1.5);
                    if(size1==3)
                        count+=9*2;
                }
            }
            a=input.next();
        }
        System.out.println(count);
    }
}
复制代码

  这个题目因为是我第一次接触菜单设计,我就按照我自己的想法来写,也因为不熟悉java的类等,这题目我就按照自己写C题目的思路想法,直接暴力来写,幸好这道题目并不是很难,具体写法就如同代码用equal来判断,套几个循环,在写几个判断变量,开一些数组来记录,总之并不复杂。

因为题目7-2题目和7-1差不多,我就不重复剖析了。

  接下来继续说第三次题目集的7-1,以下是它的题目:

复制代码

设计点菜计价程序,根据输入的信息,计算并输出总价格。

输入内容按先后顺序包括两部分:菜单、订单,最后以"end"结束。

菜单由一条或多条菜品记录组成,每条记录一行

每条菜品记录包含:菜名、基础价格 两个信息。

订单分:桌号标识、点菜记录和删除信息、代点菜信息。每一类信息都可包含一条或多条记录,每条记录一行或多行。

桌号标识独占一行,包含两个信息:桌号、时间。

桌号以下的所有记录都是本桌的记录,直至下一个桌号标识。

点菜记录包含:序号、菜名、份额、份数。份额可选项包括:1、2、3,分别代表小、中、大份。

不同份额菜价的计算方法:小份菜的价格=菜品的基础价格。中份菜的价格=菜品的基础价格1.5。小份菜的价格=菜品的基础价格2。如果计算出现小数,按四舍五入的规则进行处理。

删除记录格式:序号 delete

标识删除对应序号的那条点菜记录。

如果序号不对,输出"delete error"

代点菜信息包含:桌号 序号 菜品名称 份额 分数

代点菜是当前桌为另外一桌点菜,信息中的桌号是另一桌的桌号,带点菜的价格计算在当前这一桌。

程序最后按输入的先后顺序依次输出每一桌的总价(注意:由于有代点菜的功能,总价不一定等于当前桌上的菜的价格之和)。

每桌的总价等于那一桌所有菜的价格之和乘以折扣。如存在小数,按四舍五入规则计算,保留整数。

折扣的计算方法(注:以下时间段均按闭区间计算):

周一至周五营业时间与折扣:晚上(17:00-20:30)8折,周一至周五中午(10:30--14:30)6折,其余时间不营业。

周末全价,营业时间:9:30-21:30

如果下单时间不在营业范围内,输出"table " + t.tableNum + " out of opening hours"

参考以下类的模板进行设计:菜品类:对应菜谱上一道菜的信息。

Dish {

String name;//菜品名称

int unit_price; //单价

int getPrice(int portion)//计算菜品价格的方法,输入参数是点菜的份额(输入数据只能是1/2/3,代表小/中/大份) }

菜谱类:对应菜谱,包含饭店提供的所有菜的信息。

Menu {

Dish\[\] dishs ;//菜品数组,保存所有菜品信息

Dish searthDish(String dishName)//根据菜名在菜谱中查找菜品信息,返回Dish对象。

Dish addDish(String dishName,int unit_price)//添加一道菜品信息

}

点菜记录类:保存订单上的一道菜品记录

Record {

int orderNum;//序号\\

Dish d;//菜品\\

int portion;//份额(1/2/3代表小/中/大份)\\

int getPrice()//计价,计算本条记录的价格\\

}

订单类:保存用户点的所有菜的信息。

Order {

Record\[\] records;//保存订单上每一道的记录

int getTotalPrice()//计算订单的总价

Record addARecord(int orderNum,String dishName,int portion,int num)//添加一条菜品信息到订单中。

delARecordByOrderNum(int orderNum)//根据序号删除一条记录

findRecordByNum(int orderNum)//根据序号查找一条记录

}

### 输入格式:

桌号标识格式:table + 序号 +英文空格+ 日期(格式:YYYY/MM/DD)+英文空格+ 时间(24小时制格式: HH/MM/SS)

菜品记录格式:

菜名+英文空格+基础价格

如果有多条相同的菜名的记录,菜品的基础价格以最后一条记录为准。

点菜记录格式:序号+英文空格+菜名+英文空格+份额+英文空格+份数注:份额可输入(1/2/3), 1代表小份,2代表中份,3代表大份。

删除记录格式:序号 +英文空格+delete

代点菜信息包含:桌号+英文空格+序号+英文空格+菜品名称+英文空格+份额+英文空格+分数

最后一条记录以“end”结束。

### 输出格式:

按输入顺序输出每一桌的订单记录处理信息,包括:

1、桌号,格式:table+英文空格+桌号+”:”

2、按顺序输出当前这一桌每条订单记录的处理信息,

每条点菜记录输出:序号+英文空格+菜名+英文空格+价格。其中的价格等于对应记录的菜品\*份数,序号是之前输入的订单记录的序号。如果订单中包含不能识别的菜名,则输出“\*\* does not exist”,\*\*是不能识别的菜名

如果删除记录的序号不存在,则输出“delete error”

最后按输入顺序一次输出每一桌所有菜品的总价(整数数值)格式:table+英文空格+桌号+“:”+英文空格+当前桌的总价

本次题目不考虑其他错误情况,如:桌号、菜单订单顺序颠倒、不符合格式的输入、序号重复等,在本系列的后续作业中会做要求。

输入格式:

桌号标识格式:table + 序号 +英文空格+ 日期(格式:YYYY/MM/DD)+英文空格+ 时间(24小时制格式: HH/MM/SS)

菜品记录格式:

菜名+英文空格+基础价格

如果有多条相同的菜名的记录,菜品的基础价格以最后一条记录为准。

点菜记录格式:序号+英文空格+菜名+英文空格+份额+英文空格+份数注:份额可输入(1/2/3), 1代表小份,2代表中份,3代表大份。

删除记录格式:序号 +英文空格+delete

代点菜信息包含:桌号+英文空格+序号+英文空格+菜品名称+英文空格+份额+英文空格+分数

最后一条记录以“end”结束。

输出格式:

按输入顺序输出每一桌的订单记录处理信息,包括:

1、桌号,格式:table+英文空格+桌号+“:”+英文空格

2、按顺序输出当前这一桌每条订单记录的处理信息,

每条点菜记录输出:序号+英文空格+菜名+英文空格+价格。其中的价格等于对应记录的菜品\*份数,序号是之前输入的订单记录的序号。如果订单中包含不能识别的菜名,则输出“\*\* does not exist”,\*\*是不能识别的菜名

如果删除记录的序号不存在,则输出“delete error”

最后按输入顺序一次输出每一桌所有菜品的总价(整数数值)格式:table+英文空格+桌号+“:”+英文空格+当前桌的总价

本次题目不考虑其他错误情况,如:桌号、菜单订单顺序颠倒、不符合格式的输入、序号重复等,在本系列的后续作业中会做要求。

输入样例:

在这里给出一组输入。例如:

麻婆豆腐 12
油淋生菜 9
table 1 2023/3/22 12/2/3
1 麻婆豆腐 2 2
2 油淋生菜 1 3
end
 

输出样例:

在这里给出相应的输出。例如:

table 1: 
1 麻婆豆腐 36
2 油淋生菜 27
table 1: 38
 

输入样例1:

在这里给出一组输入。例如:

麻婆豆腐 12
油淋生菜 9
table 1 2023/3/22 17/0/0
1 麻婆豆腐 2 2
2 油淋生菜 1 3
1 delete
end
 

输出样例1:

在这里给出相应的输出。例如:

table 1: 
1 麻婆豆腐 36
2 油淋生菜 27
table 1: 22
 

输入样例2:

在这里给出一组输入。例如:

麻婆豆腐 12
油淋生菜 9
table 1 2023/3/22 16/59/59
1 麻婆豆腐 2 2
2 油淋生菜 1 3
1 delete
end
 

输出样例2:

在这里给出相应的输出。例如:

table 1: 
1 麻婆豆腐 36
2 油淋生菜 27
table 1 out of opening hours
 

输入样例3:

在这里给出一组输入。例如:

麻婆豆腐 12
油淋生菜 9
table 1 2022/12/5 15/03/02
1 麻婆豆腐 2 2
2 油淋生菜 1 3
3 麻辣鸡丝 1 2
5 delete
7 delete
table 2 2022/12/3 15/03/02
1 麻婆豆腐 2 2
2 油淋生菜 1 3
3 麻辣鸡丝 1 2
7 delete
end
 

输出样例3:

在这里给出相应的输出。例如:

table 1: 
1 麻婆豆腐 36
2 油淋生菜 27
麻辣鸡丝 does not exist
delete error;
delete error;
table 2: 
1 麻婆豆腐 36
2 油淋生菜 27
麻辣鸡丝 does not exist
delete error;
table 1 out of opening hours
table 2: 63
 

输入样例4:

在这里给出一组输入。例如:

麻婆豆腐 12
油淋生菜 9
table 1 2022/12/3 19/5/12
1 麻婆豆腐 2 2
2 油淋生菜 1 3
3 麻辣鸡丝 1 2
table 2 2022/12/3 15/03/02
1 麻婆豆腐 2 2
2 油淋生菜 1 3
3 麻辣鸡丝 1 2
1 4 麻婆豆腐 1 1
7 delete
end
 

输出样例4:

在这里给出相应的输出。例如:

table 1: 
1 麻婆豆腐 36
2 油淋生菜 27
麻辣鸡丝 does not exist
table 2: 
1 麻婆豆腐 36
2 油淋生菜 27
麻辣鸡丝 does not exist
4 table 2 pay for table 1 12
delete error;
table 1: 63
table 2: 75
复制代码

我的代码如图:

复制代码
import java.text.ParseException;
import java.util.*;
import java.util.Scanner;

public class Main {
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        List<Table> tables = new ArrayList<>();

        Menu menu = new Menu();
        String line = in.nextLine();
        Table curTable = null;

        while (!line.equals("end")) {
            String[] parts = line.split(" ");

            if (parts.length > 2) {
                if ("table".equals(parts[0])) {
                    Table table = new Table();
                    tables.add(table);
                    table.setTime(parts[2]);
                    table.setIndex(parts[1]);
                    table.setDayTime(parts[3]);
                    table.setOrder(new Order(menu, table));

                    curTable = table;
                } else if (parts.length == 4) {
                    int orderNum = Integer.parseInt(parts[0]);
                    String dishName = parts[1];
                    int portion = Integer.parseInt(parts[2]);
                    int num = Integer.parseInt(parts[3]);

                    assert curTable != null;
                    curTable.getOrder().addARecord(orderNum, dishName, portion, num, curTable.getIndex(), curTable.getIndex());
                } else if (parts.length == 5) {
                    for (Table table : tables) {
                        if (table.getIndex().equals(parts[0])) {
                            // 代點菜
                            int orderNum = Integer.parseInt(parts[1]);
                            String dishName = parts[2];
                            int portion = Integer.parseInt(parts[3]);
                            int num = Integer.parseInt(parts[4]);

                            table.getOrder().addARecord(orderNum, dishName, portion, num, curTable.getIndex(), parts[0]);
                            curTable.getOrder().addARecord(orderNum, dishName, portion, num, curTable.getIndex(), parts[0]);
                            break;
                        }
                    }
                }
            } else if ("delete".equals(parts[1])) {
                assert curTable != null;
                curTable.getOrder().delARecordByOrderNum(Integer.parseInt(parts[0]));
            } else {
                menu.addDish(parts[0], Integer.parseInt(parts[1]));
            }
            line = in.nextLine();
        }

        for (Table table : tables) {
            System.out.println("table " + table.getIndex() + ": ");
            Order order = table.getOrder();
            for (Record record : order.getRecords()) {
                String from = record.getFrom();
                String to = record.getTo();
                if (record.isAddError()) {
                    System.out.println(record.getD().getName() + " does not exist");
                } else if (record.isDelError()) {
                    System.out.println("delete error;");
                } else if (from.equals(table.getIndex())) {
                    if (to.equals(table.getIndex())) {
                        System.out.println(record.getOrderNum() + " " + record.getD().getName() + " " + record.getPrice());
                    } else {
                        System.out.println(record.getOrderNum() + " table " + from + " pay for table " + to + " " + record.getPrice());
                    }
                }
            }
        }
        for (Table table : tables) {
            Order order = table.getOrder();
            int sale = table.getSale();
            if (sale > 0) {
                System.out.println("table " + table.getIndex() + ": " + Math.round(order.getTotalPrice() * sale / 10f));
            } else {
                System.out.println("table " + table.getIndex() + " out of opening hours");
            }
        }
    }
}

class Table {
    private String index;
    private String dayTime;
    private String time;
    private Order order;

    public String getIndex() {
        return index;
    }

    public void setIndex(String index) {
        this.index = index;
    }
    public void setDayTime(String dayTime) {
        this.dayTime = dayTime;
    }

    public void setTime(String time) {
        this.time = time;
    }

    public Order getOrder() {
        return order;
    }

    public void setOrder(Order order) {
        this.order = order;
    }

    private Calendar getTimeCalendar(String time) {
        String[] arr = time.split("/");
        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.HOUR_OF_DAY, Integer.parseInt(arr[0]));
        cal.set(Calendar.MINUTE, Integer.parseInt(arr[1]));
        cal.set(Calendar.SECOND, Integer.parseInt(arr[2]));
        return cal;
    }

    public int getSale() {
        String[] dayArray = time.split("/");
        Calendar calendar = Calendar.getInstance();



        calendar.set(Calendar.DAY_OF_MONTH, 32);
//
//        calendar.set(Calendar.YEAR,Integer.parseInt(dayArray[0]));
//        calendar.set(Calendar.MONTH, Integer.parseInt(dayArray[1]) - 1);
//        calendar.set(Calendar.DATE,Integer.parseInt(dayArray[2]));
        calendar.set(Integer.parseInt(dayArray[0]), Integer.parseInt(dayArray[1])-1, Integer.parseInt(dayArray[2]));

        Calendar now = getTimeCalendar(dayTime);

        int weekDay = calendar.get(Calendar.DAY_OF_WEEK) - 1;

        if (weekDay == 0 || weekDay == 6) {
            if (!now.before(getTimeCalendar("9/30/0")) && !now.after(getTimeCalendar("21/00/00"))) {
                return 10;
            }
        } else {
            if (!now.before(getTimeCalendar("17/00/00")) && !now.after(getTimeCalendar("20/30/00"))) {
                return 8;
            }
            if (!now.before(getTimeCalendar("10/30/00")) && !now.after(getTimeCalendar("14/30/00"))) {
                return 6;
            }
        }
        // 表示不营业
        return 0;
    }
}

class Menu {
    private final Map<String, Dish> dishs = new HashMap<>();//菜品数组,保存所有菜品信息

    Menu() {
    }

    Dish searchDish(String dishName) {
        return dishs.get(dishName);
    }

    //添加一道菜品信息
    void addDish(String dishName, int unit_price) {
        Dish dish = new Dish(dishName, unit_price);
        dishs.put(dishName, dish);
    }
}

class Dish {
    String name;//菜品名称
    int unit_price; //单价

    public Dish(String dishName) {
        this.name = dishName;
    }

    public String getName() {
        return name;
    }


    public Dish(String name, int unit_price) {
        this.name = name;
        this.unit_price = unit_price;
    }

    //计算菜品价格的方法,输入参数是点菜的份额(输入数据只能是1/2/3,代表小/中/大份)
    int getPrice(int portion) {
        float b[] = {1, 1.5f, 2};
        return Math.round((unit_price * b[portion - 1]));
    }
}

class Record {
    private int orderNum;//序号\
    private Dish d;//菜品\
    private int portion;//份额(1/2/3代表小/中/大份)\
    private int num;
    private String from;
    private String to;
    private boolean isDelete = false;
    private boolean isAddError = false;
    private boolean isDelError = false;

    public Record() {
    }

    public Record(int orderNum, Dish d, int portion, int num, String from, String to) {
        this.orderNum = orderNum;
        this.d = d;
        this.portion = portion;
        this.num = num;
        this.from = from;
        this.to = to;
    }

    //计价,计算本条记录的价格
    int getPrice() {
        return d.getPrice(portion) * this.num;
    }

    public int getOrderNum() {
        return orderNum;
    }

    public Dish getD() {
        return d;
    }

    public void setD(Dish d) {
        this.d = d;
    }

    public boolean isDelete() {
        return isDelete;
    }

    public void setDelete(boolean delete) {
        isDelete = delete;
    }

    public boolean isAddError() {
        return isAddError;
    }

    public void setAddError(boolean addError) {
        isAddError = addError;
    }

    public boolean isDelError() {
        return isDelError;
    }

    public void setDelError(boolean delError) {
        isDelError = delError;
    }

    public String getFrom() {
        return from;
    }

    public String getTo() {
        return to;
    }

    public void setTo(String to) {
        this.to = to;
    }
}

class Order {
    private Menu menu;
    private Table table;

    public List<Record> getRecords() {
        return records;
    }

    private final List<Record> records = new ArrayList<>();//保存订单上每一道的记录

    public Order(Menu menu, Table table) {
        this.menu = menu;
        this.table = table;
    }

    //计算订单的总价
    int getTotalPrice() {
        int sum = 0;
        for (Record record : records) {
            if (!record.isDelete() && !record.isDelError() && !record.isAddError() && table.getIndex().equals(record.getFrom())) {
                int price = record.getPrice();
                sum = sum + price;
            }
        }

        return sum;
    }

    //添加一条菜品信息到订单中。
    void addARecord(int orderNum, String dishName, int portion, int num, String from, String to) {
        Dish dish = menu.searchDish(dishName);
        if (dish == null && table.getIndex().equals(from)) {
            Record record = new Record();
            record.setD(new Dish(dishName));
            record.setAddError(true);
            records.add(record);
            return;
        }
        Record record = new Record(orderNum, dish, portion, num, from, to);
        records.add(record);
    }

    public void delARecordByOrderNum(int orderNum) {
        for (Record record : records) {
            if (record.getOrderNum() == orderNum) {
                record.setDelete(true);
                return;
            }
        }
        Record record = new Record();
        record.setDelError(true);
        records.add(record);
    }
}
复制代码

  这道题目我开始尝试用类来进行写题目,因为运用的不太熟练,这道题目折磨了我好几天,写这道题目我的思路就是对订单进行分块处理,然后用类来进行处理。写这个题目我是先按照给的输入输出来进行构思主方法,然后再慢慢校对。耗费的时间比较久。

三、踩坑心得:

 再写第一次作业的时候,我因为强制转换问题踩了坑,如图代码的float问题。

还有一个情况就是

 在这个题目我一开始直接开了10000的空间用双重循环来写,但是会爆掉,想了好久才发现TLE了,要用数据结构set来去重,算是踩了坑。

  接下来就是一个动态规划的题目

 

   这个题目是一个经典的dp题目,但是这个题目时间卡的很紧,总是有三分过不了,身边的同学都有这种困惑,最后查找加资料才发现有一个输入输出同步流可以更快的运行编译,不过一般的题目不会这么卡时间。

四:主要困难以及改进建议

  在解题过程中,我遇到的一个主要问题是理解题目中所描述的问题,特别是对于一些复杂或者抽象的概念,可能需要更多的时间来思考和理解题意。针对这种情况,我认为可以通过以下几个方面来改进:首先,在做题之前要仔细阅读题目,尤其是关键句子和需要注意的细节,确保对问题有一个清晰的认识。如果有疑惑,可以多看题目几遍或者向其他人请教,例如询问老师、同学或者网上论坛等。其次,在解题过程中应该善于利用一些调试技巧,例如打印输出语句、单步执行等方法,以便更好地理解代码的运行结构和逻辑。这样有助于我们发现代码中存在的错误,并更加快速地定位解决问题的法。通过不断实践,掌握编程的基本技能,逐渐积累经验。

五:总结

  在完成本阶段的三次题目集的过程中,我深刻地认识到了编程能力对于计算机科学专业的重要性。通过不断的练习和思考,我对Java语言的基础知识有了更加深入的理解,并对编写高质量代码有了更清晰的认识。通过本阶段的学习,我意识到自己还需要进一步学习和研究的方面。首先,我希望能够掌握更多的数据结构和算法知识,以便应对更加复杂的问题和挑战;其次,我还需要提高自己的实践能力,在实际项目中应用所学知识、积累经验;最后,我也希望加强自己的代码风格和规范性,提高编码的效率和质量。针对教师、课程、作业、实验、课上及课下组织方式等方面,我对其中的一些方面提出改进建议:

  1. 教师应该更多地注重培养学生的动手能力和实践能力,鼓励学生积极参加相关的实践项目和比赛活动;

  2. 作业的难度可以逐步增加,同时给出合理的批改反馈,以刺激学生不断地提升自身的编程能力;

  3. 在实验环节中,可以增加更多真实场景下的案例分析情境,帮助学生更好地掌握所学知识点的运用和实践;

  4. 课上的教学内容和形式可以有所丰富,如融入问题解决、编程练习和小组讨论等环节,以更好地激发学生的学习兴趣和积极性。

  总之,本阶段的学习对我的专业技能和职业素养的提升有着积极的影响。