题目集1~3的总结性Blog

1.前言

1.知识点

前三次题目集目的很明确,在循环结构,Java的基础语法的使用以及对数据录入后的处理等方面让我们解决问题。

第一次题目集考察的是选择结构的输入输出,判断输入的数据并作出相应的输出;

第二次题目集考察循环结构以及类与类间的使用,菜单一菜单二都是用循环处理数据,用构建Java类对数据进行储存以及实现相应功能,选择正确的结果输出。

第三次题目集考察相对来说是第二次的延续,新增了对日期的使用以及一些查重功能的实现,还有对数据的排序。

2.题量

题量不少,学习程度浅的完成起来较为困难。

3.难度

第一次难度不算很难,容易上手,不至于干瞪眼,第二次菜单的加入,需要花些时间去完成,第三次除去菜单来说,其他的还算可以,到这菜单我就基本无法通过检测。

2.设计与分析

菜单一代码:

import java.util.Scanner;
public class Main{
    public static void main(String[] args){
        Scanner s = new Scanner(System.in);
        Menu m = new Menu();
        Order o = new Order();
        String t = null;
        int i=0;
        int j=0;
        while(!"end".equals(t)){
            t = s.nextLine();
            if(t.equals("end")){
                break;
            }
            String[] t1 = t.split(" ");
            o.records[i] = new Record();
            o.records[i] = o.addARecord(t1[0],Integer.parseInt(t1[1]));
            i++;
            j++;
        }
        Dish e;
        int countt=0;
        for(i=0;i<j;i++){
                e = m.searthDish(o.records[i].d.name);
            if(e==null){
                System.out.println(o.records[i].d.name+" "+"does not exist");
            }
            else{
                o.records[i].d.unit_prince = e.unit_prince;
            }
        }
        System.out.println(o.getTotalPrice());
    }
}
 class Record{
    Dish d = new Dish();
    int portion;
    int getPrice(){
          return d.getPrice(portion);
                }
}
class Order {
    Record[] records =new Record[1000000];
    int count = 0;
    int getTotalPrice(){
        int sum=0;
        for(int i=0;i<count;i++){
            sum=sum+records[i].getPrice();
        }
        return sum;
    }
    Record addARecord(String dishName,int portion){
        Record rd1 = new Record();
        rd1.d.name = dishName;
        rd1.portion = portion;
        count++;
        return rd1;
    }

}

class Dish{
    String name;
    int unit_prince;
    int getPrice(int portion){
        int peic = 0;
         switch(portion){
             case 1:
                 peic=(int)unit_prince;break;
             case 2:
                  peic=Math.round((float)(unit_prince*1.5));break;
             case 3:
                 peic=(int)(unit_prince*2);break;
         }
        return peic;
       
    }
}
class Menu{
    Dish[] dishs = new Dish[4];
    Dish searthDish(String dishName){
   
    dishs[0] = new Dish();
    dishs[1] = new Dish();
    dishs[2] = new Dish();
    dishs[3] = new Dish();
    
    dishs[0].name ="西红柿炒蛋";
    dishs[1].name = "清炒土豆丝";
    dishs[2].name = "麻婆豆腐";
    dishs[3].name = "油淋生菜";
    
    dishs[0].unit_prince = 15;
    dishs[1].unit_prince = 12;
    dishs[2].unit_prince = 12;
    dishs[3].unit_prince = 9;
        for(int i=0;i<4;i++){
            if(dishName.equals(dishs[i].name)){
                return dishs[i];
            }
        }
        return null;
    }
}

类图:

分析菜单一是我们第一道相对代码量更多的题目,真正的面向对象解决问题,它主要需要构建相应的类,根据要求使类间形成正确的关联关系,创建实现相应功能的方法。

菜单二我并没有做出来但大概知道了与一相比需要新增一个删除功能,菜单三相较于二他的输入格式又不同增加了桌子的信息,桌号table+英文空格+桌号+“:”+英文空格+当前桌的总价;菜单三的价格与时间挂钩,它需要根据时间的不同,改变菜单的算法。桌号来说,需要新创建一个桌类,对于数据间的使用于处理更加方便。

对菜单一分析

1.通过输入命令来添加菜品到订单中。

2.通过订单,得到菜品的总价格。

3.通过菜单得到菜品的信息。

这里对代码的不同部分进行了详细的说明:

1.首先使用import语句导入了java.util.Scanner类库,该类库可以方便地读取从键盘输入的内容。

2.定义了一个名为Main的公共类,该类包含了程序的主函数main。

3.在main函数中,创建了Scanner对象s用于从键盘读取输入。

4.创建了Menu对象m和Order对象o,用于实现菜单和订单功能。

5.创建了一个循环,等待用户输入,直到输入"end"为止。

6.使用split()方法来将用户输入的命令字符串按空格分割成数组,并将其存储在t1中。

7.创建一个记录对象,并将其添加到订单数组中。

8.对订单中的每个菜品进行价格计算,并将其设置为相应的记录对象的d.unit_price中。

9.在main函数中输出订单对象o的总价格。

10.定义了一个名为Record的类来表示订单中的记录,该类包含了一个Dish对象和一个portion整数变量。该类还包含了一个名为getPrice的方法来计算菜品价格。

11.定义了一个名为Order的类来表示订单,该类包含了一个记录数组records和一个count整数变量。该类还包含了一个名为getTotalPrice的方法来计算订单的总价,以及一个名为addARecord的方法来向订单中添加记录。

12.定义了一个名为Dish的类来表示菜品,该类包含了菜品名name和单价unit_price。该类还包含了一个名为getPrice的方法,根据菜品的份量,计算并返回其价格。

13.定义了一个名为Menu的类来表示菜单,该类包含一个菜品数组dishs和一个名为searthDish的方法,该方法返回输入菜品名的菜品对象,如果菜品不存在,则返回null。

总的来说,这段代码展示了Java语言的一些基础知识,包括类、对象、数组、循环、条件语句、方法等。同时,也展示了如何使用Java类库,例如Scanner和Math库。

3.踩坑心得

1. 循环结构中,要注意循环条件的判断和循环变量的更新,否则可能会出现死循环或者无法进入循环的情况。

2. 在Java的基础语法使用中,要注意语法的正确性和规范性,例如变量名的命名、代码缩进等,否则会影响代码的可读性和可维护性。

3. 对数据录入后的处理,要注意数据类型的转换和异常处理,例如输入的字符串需要转换为整数或者浮点数,同时要考虑用户输入不合法的情况,需要进行异常处理。

4. 在选择结构的输入输出中,要注意判断条件的准确性和完整性,否则可能会出现逻辑错误或者漏判的情况。

5. 在循环结构中,要注意循环变量的初始化和更新,以及循环条件的判断,否则可能会出现循环次数不正确或者死循环的情况。

6. 在类与类间的使用中,要注意类的继承关系和接口的实现,以及对象的创建和使用,否则可能会出现代码逻辑错误或者对象引用错误的情况。

总之,在Java的使用中,要注重细节,注意规范,避免踩坑。同时,要注重代码的可读性和可维护性,使得代码更加优雅和易于理解。

4.主要困难和改进意见

主要困难:

1.输入的数据太多,没法做到相应的处理以及正确的输出。

2.不能根据题意写出正确的抽象类。

3. 循环结构的理解和运用:循环结构是Java中非常重要的语法之一,但是对于初学者来说,循环结构的理解和运用可能会比较困难。

4. 数据录入和处理:在Java中,数据的录入和处理是非常重要的,但是对于初学者来说,可能会对数据的类型和处理方法不太熟悉,导致出现错误。

5. 类与类间的使用:在Java中,类与类之间的使用是非常常见的,但是对于初学者来说,可能会对类的定义和使用方法不太熟悉,导致出现错误。

改进意见:

1.在解决问题的时候,根据题意,分析出需要实现的功能,正确的创建出相应的类,需要的功能是独立的,那么就需要新创建一个类,与其他功能相结合。

2. 多练习:对于循环结构、数据录入和处理、类与类间的使用等基础语法,多进行练习和实践,加深理解和掌握。

3. 学习资料:可以通过查看Java的官方文档、参考书籍、网上教程等多种途径来学习Java的基础语法和使用方法。

4. 寻求帮助:在学习Java的过程中,遇到困难可以向老师、同学、论坛等寻求帮助,及时解决问题。

 5.总结

Java是一种基于面向对象编程的高级语言,它具有简单、安全、可移植、高性能、多线程、动态性等特点,被广泛应用于开发各种类型的应用程序。

在Java中,循环结构是非常重要的语法之一,它可以让程序重复执行某个代码块,从而实现一些需要重复处理的任务。Java中常用的循环结构包括for循环、while循环和do-while循环。这些循环结构可以根据不同的需求进行选择使用,例如for循环适用于已知循环次数的情况,而while循环适用于不确定循环次数的情况。

Java的基础语法的使用也是非常重要的,它包括变量的声明、数据类型的定义、运算符的使用等。在Java中,变量的声明需要指定变量的类型和名称,例如int num = 10;表示声明了一个整型变量num并赋值为10。同时,Java中还有许多数据类型可供选择,包括整型、浮点型、字符型、布尔型等。运算符的使用也是非常重要的,例如算术运算符、比较运算符、逻辑运算符等,它们可以对数据进行各种运算操作。

对数据录入后的处理也是Java编程中的常见任务之一,例如读取用户输入的数据并进行相应的处理。Java中可以使用Scanner类来读取用户输入的数据,例如Scanner scanner = new Scanner(System.in);表示创建了一个Scanner对象来读取用户的输入。通过Scanner对象的各种方法,可以读取不同类型的数据并进行相应的处理。

选择结构的输入输出也是Java编程中的常见任务之一,例如根据用户的输入进行不同的操作。Java中的选择结构包括if语句、switch语句等,它们可以根据不同的条件进行选择执行不同的代码块。例如if语句可以根据一个条件来判断执行哪个代码块,例如if(num > 0) { //执行代码块 }。

循环结构也是Java编程中的重要部分,它可以让程序重复执行某个代码块,从而实现一些需要重复处理的任务。Java中的循环结构包括for循环、while循环和do-while循环,它们可以根据不同的需求进行选择使用。例如for循环可以用于已知循环次数的情况,而while循环可以用于不确定循环次数的情况。

类与类间的使用也是Java编程中的重要部分,它可以让不同的类之间进行交互和调用。Java中的类可以通过继承、实现接口等方式来进行扩展和重用,例如可以定义一个父类和多个子类,子类可以继承父类的属性和方法。同时,Java中还有许多常用的类库,例如java.util包中的各种类可以用于处理日期、时间、集合等各种数据类型。

总之,Java编程涉及到的语法和技术非常丰富,需要不断学习和掌握。只有深入理解Java的基础语法、循环结构、选择结构、类与类间的使用等内容,才能够编写出高质量的Java程序。

posted @ 2023-05-24 17:02  俺在思考  阅读(7)  评论(0)    收藏  举报