首页 > 其他分享 >BLOG-1

BLOG-1

时间:2023-05-24 20:00:22浏览次数:38  
标签:输出 String int 样例 BLOG Dish 输入

前言

知识点

第一次作业:前八章Java语法相关内容。

第二次作业:练习类的构造方法、方法的调用、参数传递、对象的构造与使用;练习循环结构;练习数据的输入与输出;理解抽象类与子类的关系。

第三次作业:代码聚合性的调试。

题量

第一次作业:9题

第二次作业:4题

第三次作业:7题

难度等情况

第一次作业:简单

第二次作业:中等

第三次作业:较难

设计与分析

第一次作业:

7-1 身体质量指数(BMI)测算

分数 10 作者 蔡轲 单位 南昌航空大学

 

体重是反映和衡量一个人健康状况的重要标志之一,过胖和过瘦都不利于健康,BMI(身体质量指数)计算方法:体重(以千克为单位)除以身高(以米为单位)的平方。中国成人正常的BMI应在18.5-24之间,如果小于18.5为体重不足,如果大于等于24为超重,大于等于28为肥胖。请编写程序,测算身体状态。

输入格式:

两个数值:体重(以千克为单位),身高(以米为单位),数值间以空格分隔。例如:65.5 1.75。
注意:体重的世界纪录是727公斤,身高的世界纪录是2.72米。输入数据上限不得超过纪录,下限不得小于等于0;

输出格式:

输入数值超出范围 :输出“input out of range”。例如:-2 3或者125 5。
BMI小于18.5 :输出“thin”。
BMI大于等于18.5小于24 :输出“fit”。
BMI大于等于24小于28 :输出“overweight”。
BMII大于等于28 :输出“fat”。

输入样例0:

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

-2  8

输出样例0:

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

input out of range 

输入样例1:

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

70 1.75

输出样例1:

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

fit

 

import java.util.Scanner;
public class Main
{
    public static void main(String[] args)
    {
        double h,w,b;
        Scanner input =new Scanner(System.in);
        w=input.nextDouble();
        h=input.nextDouble();
        b=w/h/h;
        if(w<=0||h<=0||w>727||h>2.72)
            System.out.print("input out of range");
        else if(b<18.5)
            System.out.print("thin");
        else if(b<24)
            System.out.print("fit");
        else if(b<28)
            System.out.print("overweight");
        else
            System.out.print("fat");
    }
}

 

7-2 长度质量计量单位换算

分数 5 作者 蔡轲 单位 南昌航空大学

 

长度、质量的计量有多重不同的计算体系,有标准的国际单位制:千克与米,也有各个国家自己的计量方法如:磅、英寸;1磅等于0.45359237千克,1英寸等于0.0254米,请编写程序实现国际单位制与英制之间的换算。

输入格式:

两个浮点数,以空格分隔,第一个是质量(以千克为单位)、第二个是长度(以米为单位)。例如:0.45359237 0.0254。

输出格式:

两个浮点数,以空格分隔,第一个是质量(以磅为单位)、第二个是长度(以英寸为单位)。例如:1.0 1.0。

输入样例:

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

0.45359237 0.0254 

输出样例:

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

1.0 1.0 

 

 

 

import java.util.Scanner;
public class Main
{
    public static void main(String[] args)
    {
        double m,l;
        Scanner input =new Scanner(System.in);
        m=input.nextDouble();
        l=input.nextDouble();
        m=m/0.45359237;
        l=l/0.0254;
        System.out.print((float)m+" "+(float)l);
    }
}

 

7-3 奇数求和

分数 9 作者 蔡轲 单位 南昌航空大学

 

计算一个数列中所有奇数的和。

输入格式:

十个整数,以空格分隔。例如:1 2 3 4 5 6 7 8 9 0。

输出格式:

输入数列中所有奇数之和。例如:25。

输入样例:

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

1 2 3 4 5 6 7 8 9 0

输出样例:

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

25  

 

 

import java.util.Scanner;
public class Main
{
    public static void main(String[] args)
    {
        Scanner input =new Scanner(System.in);
        int a;
        int Sum=0;
        for(int i=0;i<10;i++)
        {
            a=input.nextInt();
            if(a%2!=0)
                Sum=Sum+a;
        }
        System.out.print(Sum);
    }
}

 

7-4 房产税费计算2022

分数 12 作者 蔡轲 单位 南昌航空大学

 

房屋交易在日常生活中非常常见的事情,房屋交易时要额外支付各种税费,按2022年房产交易新政策的规定买房人应缴纳税费包括:

1、契税:首次购房评估额90平(含)内1%、90平-144平(含)内1.5%,超过144平或非首 次3%,买方缴纳。

2、印花税:房款的0.05%。

3、交易费:3元/平方米。

4、测绘费:1.36元/平方米。

5、权属登记费及取证费:一般情况是在200元内。

输入格式:

四个数据,以空格分隔:
1、第几次购房(整数)
2、房款(整数/单位万元)
3、评估价(整数/单位万元)
4、房屋面积(浮点数/单位平方米)。
例如:1 100 100 90。

输出格式:

契税、印花税、交易费、测绘费(以元为单位),以空格分隔。例如:10000.0 500.0 270.0 122.4

输入样例:

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

1 100 100 90 

输出样例:

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

10000.0 500.0 270.0 122.4 

 

 

import java.util.Scanner;
public class Main{
    public static void main(String[] args){
        Scanner input=new Scanner(System.in);
        int number =input.nextInt();
        int house=input.nextInt();
        int appraise=input.nextInt();
        double S=input.nextDouble();
        double a=0;
        if(number==1){
            if(S<=90)
                a=appraise*0.01*10000;
            else if(S>90&&S<=144)
                a=appraise*0.015*10000;
            else
                a=appraise*0.03*10000;
        }
        else if(number>1){
            a=appraise*0.03*10000;
        }
        double b=house*0.0005*10000;
        double c=3*S;
        double d=1.36*S;
        System.out.println((float)a+" "+(float)b+" "+(float)c+" "+(float)d);
    }
}

 

7-5 游戏角色选择

分数 14 作者 蔡轲 单位 南昌航空大学

 

一款网游中包括4个种族:人类、精灵、兽人、暗精灵,每个种族包含三种角色:战士、法师、射手。玩家新建人物时需要选择种族和角色。请编写角色选择程序。

输入格式:

两个整数:游戏种族、角色的选项,以空格分隔。例如:1 2。
种族选项设定为:1、人类 2、精灵 3、兽人 4、暗精灵
角色选项设定为:1、战士 2、法师 3、射手

输出格式:

所选择的种族、角色的名称,以空格分隔。例如:人类 法师
若输入数值超出选项范围,输出“Wrong Format”

输入样例1:

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

1 2

输出样例1:

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

人类 法师

输入样例2:

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

1 6

输出样例2:

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

Wrong Format
import java.util.Scanner;
public class Main
{
    public static void main(String[] args)
    {
        int a,b;
        Scanner input =new Scanner(System.in);
        a=input.nextInt();
        b=input.nextInt();
        if((a==1||a==2||a==3||a==4)&&(b==1||b==2||b==3))
        {
              if(a==1)
              {
                  if(b==1)
                      System.out.print("人类"+" "+"战士");
                  if(b==2)
                      System.out.print("人类"+" "+"法师");
                  if(b==3)
                      System.out.print("人类"+" "+"射手");
              }
              if(a==2)
              {
                  if(b==1)
                      System.out.print("精灵"+" "+"战士");
                  if(b==2)
                      System.out.print("精灵"+" "+"法师");
                  if(b==3)
                      System.out.print("精灵"+" "+"射手");
              }
              if(a==3)
              {
                  if(b==1)
                      System.out.print("兽人"+" "+"战士");
                  if(b==2)
                      System.out.print("兽人"+" "+"法师");
                  if(b==3)
                      System.out.print("兽人"+" "+"射手");
              }
              if(a==4)
              {
                  if(b==1)
                      System.out.print("暗精灵"+" "+"战士");
                  if(b==2)
                      System.out.print("暗精灵"+" "+"法师");
                  if(b==3)
                      System.out.print("暗精灵"+" "+"射手");
              }
        }
        else 
            System.out.print("Wrong Format");

    }
}

 

7-6 学号识别

分数 10 作者 蔡轲 单位 南昌航空大学

学校的学号由8位数字组成,前两位是入学年份(省略了20);第3、4位是学院编号,01代表材料学院,02代表机械学院,03代表外语学院,20代表软件学院;第5、6位是学院内部班级编号,最后两位是班级内部学号。如:18011103,入学年份是2018年,材料学院,11班,03号

输入格式:

8位数字组成的学号。例如:18011103
注意:输入学号不是8位或者学院编号不是01、02、03、20其中之一,属于非法输入

输出格式:

学号每一项的完整说明。例如:
入学年份:2018年
学院:材料学院
班级:11
学号:03

注意:如非法输入,输出“Wrong Format"

输入样例:

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

18011103

输出样例:

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

入学年份:2018年
学院:材料学院
班级:11
学号:03

输入样例1:

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

18013

输出样例1:

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

Wrong Format

 

import java.util.Scanner;
public class Main
{
    public static void main(String[] args)
    {
        Scanner input =new Scanner(System.in);
        String id=input.next();
        if(id.length()!=8)
        {
            System.out.print("Wrong Format");
            return;
        }
        String nf=id.substring(0,2);
        String xy=id.substring(2,4);
        String bj=id.substring(4,6);
        String xh=id.substring(6,8);
        if(xy.equals("01"))
            xy="材料学院";
        else if(xy.equals("02"))
            xy="机械学院";
        else if(xy.equals("03"))
            xy="外语学院";
        else if(xy.equals("20"))
            xy="软件学院";
        else
        {
            System.out.print("Wrong Format");
            return;
        }
        System.out.println("入学年份:20"+nf+"年");
        System.out.println("学院:"+xy);
        System.out.println("班级:"+bj);
        System.out.print("学号:"+xh);
    }
}

7-8 巴比伦法求平方根近似值

分数 10 作者 蔡轲 单位 南昌航空大学

巴比伦法求n的近似值可以用以下公式:
nextGuess = (lastGuess+n/lastGuess)/2
程序初始运行时lastGuess可赋予一个最初的猜测值。当由公式求得的nextGuess和lastGuess相差较大时,把nextGuess的值赋给lastGuess,继续以上过程,直至nextGuess和lastGuess几乎相同,此时lastGuess或者nextGuess就是平方根的近似值。
本题要求:nextGuess和lastGuess的差值小于0.00001时认为两者几乎相同

输入格式:

1、两个浮点数,以空格分隔,第一个是n,第二个是lastGuess最初的猜测值。例如:2 1。
2、若输入的两个数中包含负数或者lastGuess初始输入为0,认定为非法输入

输出格式:

1、输出n的平方根近似值:lastGuess。例如:1.4142157
2、非法输入时输出:"Wrong Format"

输入样例:

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

2 1

输出样例:

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

1.4142157

输入样例1:

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

2 -1

输出样例:

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

Wrong Format
import java.util.Scanner;
public class Main
{
    public static void main(String[] args)
    {
        Scanner input =new Scanner(System.in);
        float nextGuess;
        float n=input.nextFloat();
        float lastGuess=input.nextFloat();
        if(n<0||lastGuess<=0)
        {
            System.out.print("Wrong Format");
            return;
        }
        nextGuess = (lastGuess+n/lastGuess)/2;
        while(Math.abs(nextGuess-lastGuess)>=0.00001)
        {
            lastGuess = nextGuess;
            nextGuess = (lastGuess+n/lastGuess)/2;
        }
        System.out.print(lastGuess);
    }
}

7-9 二进制数值提取

分数 10 作者 蔡轲 单位 南昌航空大学

在一个字符串中提取出其中的二进制数值序列,。

输入格式:

一个由0、1构成的序列,以-1为结束符,非0、1字符视为正常输入,但忽略不计,未包含结束符的序列视为非法输入。例如:abc00aj014421-1

输出格式:

将输入的序列去掉非0、1字符以及结尾符的数据内容,
注:结束符-1之后的0\1字符忽略不计。
例如:00011。

输入样例:

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

abc00aj014421-1

输出样例:

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

00011

输入样例1:

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

a0571-1k001y

输出样例1:

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

01
import java.util.Scanner;
 public class Main
 {
     public static void main(String[] args)
     {
        Scanner input = new Scanner(System.in);
        String a = input.nextLine();
        int k=0;
        for(int i=0;i<a.length();i++)
        {
            if(a.charAt(i)=='-'&&a.charAt(i+1)=='1')
            {
                k=i;
                break;
            }
        }
        for(int j=0;j<k;j++)
        {
            if(a.charAt(j)=='0'||a.charAt(j)=='1')
            {
                System.out.print(a.charAt(j));
            }
        }
        if(a.indexOf("-1")==-1)
        {
            System.out.print("Wrong Format");
        }
     }
 }

第二次作业:

7-1 菜单计价程序-1

分数 30 作者 蔡轲 单位 南昌航空大学

某饭店提供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);
        Dish[] arr=new Dish[4];
        Dish menu0 = new Dish("西红柿炒蛋", 15.0);
        Dish menu1 = new Dish("清炒土豆丝", 12.0);
        Dish menu2 = new Dish("麻婆豆腐", 12.0);
        Dish menu3 = new Dish("油淋生菜", 9.0);
        arr[0] = menu0;
        arr[1] = menu1;
        arr[2] = menu2;
        arr[3] = menu3;
        Dish[] menu = new Dish[20];
        int i = 0;
        while (true) {
            String name = input.next();
            if (name.equals("end"))
                break;
            int portion = input.nextInt();
            Dish temp=new Dish(name,portion);
            menu[i]=temp;
            i++;
        }
        Compare(menu,arr);
        int sum=Calculate(menu,arr);
        System.out.println(sum);
    }
    public static void Compare(Dish[] menu,Dish[]arr){
        for (int i = 0; i < menu.length; i++) {
            int cont=0;
            if(menu[i]==null){
                break;
            }
            for (int j = 0; j < arr.length; j++) {
                    if(menu[i].getName().equals(arr[j].getName())){
                        cont++;
                    }
            }
            if(cont==0)
                System.out.println(menu[i].getName()+" does not exist");
        }
    }
    public static int Calculate(Dish[] menu,Dish[]arr){
        int sum=0;
        for (int i = 0; i < menu.length; i++) {
            if(menu[i]==null){
                break;
            }
            for (int j = 0; j < arr.length; j++) {
                    if(menu[i].getName().equals(arr[j].getName())){
                        sum=sum+arr[j].getUnit_price(menu[i].getPortion());
                    }
            }
        }
        return sum;
    }
}
 class Dish {
    String name;//菜品名称
    double unit_price; //单价
    int portion;//计算菜品价格的方法,输入参数是点菜的份额(输入数据只能是1/2/3,代表小/中/大份)
    Dish(){};
    Dish(String name,double unit_price){
        this.name=name;
        this.unit_price=unit_price;
    }
    Dish(String name,int portion){
        this.name=name;
        this.portion=portion;
    }

    void setName(String name) {
        this.name = name;
    }
    String getName() {
        return name;
    }

    void setUnit_price(double unit_price) {
        this.unit_price=unit_price;
    }

    void setPortion(int portion) {//读入份量
        this.portion = portion;
    }
    int getUnit_price(int a) {
        double temp = unit_price;
        int t=0;
        if (a == 1)
            t = (int)temp;
        else if (a == 2) {
            t = (int)(temp * 1.5);
            if(t%10==3||t%10==2)
                t++;
        }
        else if (a == 3)
            t = (int)(temp * 2);
        return  t;
    }

    int getPortion() {
        return portion;
    }
}
View Code

 

7-2 菜单计价程序-2

分数 40 作者 蔡轲 单位 南昌航空大学

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

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

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

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


订单分:点菜记录和删除信息。每一类信息都可包含一条或多条记录,每条记录一行。
点菜记录包含:序号、菜名、份额、份数。
份额可选项包括:1、2、3,分别代表小、中、大份。

删除记录格式:序号 delete

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

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

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

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)//根据序号查找一条记录
}

输入格式:

菜品记录格式:

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

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

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

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

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

输出格式:

按顺序输出每条订单记录的处理信息,

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

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

最后输出订单上所有菜品的总价(整数数值),

本次题目不考虑其他错误情况,如:菜单订单顺序颠倒、不符合格式的输入、序号重复等。

输入样例:

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

麻婆豆腐 12
油淋生菜 9
1 麻婆豆腐 2 2
2 油淋生菜 1 3
end

输出样例:

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

1 麻婆豆腐 36
2 油淋生菜 27
63

输入样例1:

订单中包含删除记录。例如:

麻婆豆腐 12
油淋生菜 9
1 麻婆豆腐 2 2
2 油淋生菜 1 3
1 delete
end

输出样例1:

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

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

输入样例2:

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

麻婆豆腐 12
油淋生菜 9
1 麻婆豆腐 2 2
2 油淋生菜 1 3
3 麻辣鸡丝 1 2
end

输出样例2:

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

1 麻婆豆腐 36
2 油淋生菜 27
麻辣鸡丝 does not exist
63

输入样例3:

订单中包含删除信息以及不存在的菜品记录。例如:

麻婆豆腐 12
油淋生菜 9
1 麻婆豆腐 2 2
2 油淋生菜 1 3
3 麻辣鸡丝 1 2
1 delete
7 delete
end

输出样例3:

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

1 麻婆豆腐 36
2 油淋生菜 27
麻辣鸡丝 does not exist
delete error;
27

输入样例4:

订单中包含删除信息以及不存在的菜品记录。例如:

麻婆豆腐 12
油淋生菜 9
1 麻婆豆腐 2 2
2 油淋生菜 1 3
3 麻辣鸡丝 1 2
5 delete
7 delete
end

输出样例4:

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

1 麻婆豆腐 36
2 油淋生菜 27
麻辣鸡丝 does not exist
delete error;
delete error;
63
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        Dish[] arr=new Dish[4];
        Dish menu0 = new Dish("西红柿炒蛋", 15.0);
        Dish menu1 = new Dish("清炒土豆丝", 12.0);
        Dish menu2 = new Dish("麻婆豆腐", 12.0);
        Dish menu3 = new Dish("油淋生菜", 9.0);
        arr[0] = menu0;
        arr[1] = menu1;
        arr[2] = menu2;
        arr[3] = menu3;
        Dish[] menu = new Dish[20];
        int i = 0;
        while (true) {
            String name = input.next();
            if (name.equals("end"))
                break;
            int portion = input.nextInt();
            Dish temp=new Dish(name,portion);
            menu[i]=temp;
            i++;
        }
        Compare(menu,arr);
        int sum=Calculate(menu,arr);
        System.out.println(sum);
    }
    public static void Compare(Dish[] menu,Dish[]arr){
        for (int i = 0; i < menu.length; i++) {
            int cont=0;
            if(menu[i]==null){
                break;
            }
            for (int j = 0; j < arr.length; j++) {
                    if(menu[i].getName().equals(arr[j].getName())){
                        cont++;
                    }
            }
            if(cont==0)
                System.out.println(menu[i].getName()+" does not exist");
        }
    }
    public static int Calculate(Dish[] menu,Dish[]arr){
        int sum=0;
        for (int i = 0; i < menu.length; i++) {
            if(menu[i]==null){
                break;
            }
            for (int j = 0; j < arr.length; j++) {
                    if(menu[i].getName().equals(arr[j].getName())){
                        sum=sum+arr[j].getUnit_price(menu[i].getPortion());
                    }
            }
        }
        return sum;
    }
}
 class Dish {
    String name;
    double unit_price;
    int portion;
    Dish(){};
    Dish(String name,double unit_price){
        this.name=name;
        this.unit_price=unit_price;
    }
    Dish(String name,int portion){
        this.name=name;
        this.portion=portion;
    }

    void setName(String name) {
        this.name = name;
    }
    String getName() {
        return name;
    }

    void setUnit_price(double unit_price) {
        this.unit_price=unit_price;
    }

    void setPortion(int portion) {//读入份量
        this.portion = portion;
    }
    int getUnit_price(int a) {
        double temp = unit_price;
        int t=0;
        if (a == 1)
            t = (int)temp;
        else if (a == 2) {
            t = (int)(temp * 1.5);
            if(t%10==3||t%10==2)
                t++;
        }
        else if (a == 3)
            t = (int)(temp * 2);
        return  t;
    }

    int getPortion() {
        return portion;
    }
}
View Code

7-3 jmu-java-日期类的基本使用

分数 15 作者 郑如滨 单位 集美大学
  1. 给定一个日期,判定是否为合法日期。如果合法,判断该年是否闰年,该日期是当年第几天、当月第几天、当周第几天、。
  2. 给定起始日期与结束日期,判定日期是否合法且结束日期是否早于起始日期。如果均合法,输出结束日期与起始日期之间的相差的天数、月数、念书。

输入格式:

第一行输入一个日期字符串,格式为"YYYY-MM-dd"
第二行输入两个日期字符串,中间使用空格隔开。分别代表开始日期与结束日期。

输出格式:

如果第一行日期字符串非法,输出自定义的错误信息。
如果第一行日期有效,输出相关信息,如果是闰年要输出是闰年。
如果第二行两个日期,只要有一个无效。就输出相关错误信息。
如果第二行两个日期有效且结束日期不早于开始日期,输出相关信息。

输入样例1:

第一行日期非法、第二行有日期非法

2020-02-30
2020-02-30 2020-01-02

输出样例1:

2020-02-30无效!
2020-02-30或2020-01-02中有不合法的日期.

输入样例2:

均有效且合法

2021-02-28
2019-08-01 2020-01-02
 

输出样例2:

2021-02-28是当年第59天,当月第28天,当周第7天.
2020-01-02与2019-08-01之间相差154天,所在月份相差-7,所在年份相差1.

输入样例3:

日期均有效,但结束日期早于开始日期

2020-02-28
2020-02-02 2020-02-01

输出样例3:

2020-02-28是闰年.
2020-02-28是当年第59天,当月第28天,当周第5天.
2020-02-01早于2020-02-02,不合法!
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) throws ParseException {
        Scanner input = new Scanner(System.in);
        String[] a = new String[3];
        String[] b = new String[3];
        for (int i = 0; i < a.length; i++) {
            a[i] = input.next();
        }
        for (int i = 0; i < a.length; i++) {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            Date date = sdf.parse(a[i]);
            b[i] = sdf.format(date);
        }
        Judge1(a[0], b[0]);
        Judge2(a, b);
    }

    public static void Judge1(String a, String b) throws ParseException//判断第一行输入的第一个日期是否合法
    {
        if (a.equals(b)) {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            Date date = sdf.parse(a);
            Calendar c = Calendar.getInstance();
            c.setTime(date);
            int year = c.get(Calendar.YEAR);
            int run = Run(year);
            if (run == 1)
                System.out.println(b + "是闰年.");
            int a1 = c.get(Calendar.DAY_OF_YEAR);
            int a2 = c.get(Calendar.DAY_OF_MONTH);
            int a3 = c.get(Calendar.DAY_OF_WEEK);
            a3 = GetWeekday(a3);
            System.out.println(b + "是当年第" + a1 + "天,当月第" + a2 + "天,当周第" + a3 + "天.");
        } else System.out.println(a + "无效!");//测试点五
    }
 public static void Judge2(String[] a, String[] b) throws ParseException //判断第二三个日期
    {
        boolean flag = false;
        if ((a[1].equals(b[1])) && (a[2].equals(b[2])))//判断第二三个日期是否合法
            flag = true;
        if (flag) {
            int[] year = new int[2];
            int[] month = new int[2];
            int[] day = new int[2];
            for (int i = 1; i < a.length; i++) //从数组的第二个元素开始
            {
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
                Date date = sdf.parse(b[i]);
                Calendar c = Calendar.getInstance();
                c.setTime(date);
                year[i-1] = c.get(Calendar.YEAR);
                month[i-1] = c.get(Calendar.MONTH);
                day[i-1] = c.get(Calendar.DAY_OF_YEAR);
            }
            if(year[0] > year[1])
                System.out.println(a[2]+"早于"+a[1]+",不合法!");
            else if ((year[0] == year[1])) 
            {
                if(month[0] > month[1])
                {
                    System.out.println(a[2]+"早于"+a[1]+",不合法!");
                }
                else if(month[0] == month[1]&&day[0] > day[1])
                {
                    System.out.println(a[2]+"早于"+a[1]+",不合法!");
                }
                else if ((month[0] == month[1]) && (day[0] == day[1])) 
                {
                    System.out.println(a[2]+"与"+a[1]+"之间相差0天,所在月份相差0,所在年份相差0.");
                }
            }
            else
            {
                int months=month[1]-month[0];
                int years=year[1]-year[0];
                int sum = Caulate(year, day);
                System.out.println(a[2]+"与"+a[1]+"之间相差"+sum+"天,所在月份相差"+months+",所在年份相差"+years+".");
            }
        } 
        if(!flag)
            System.out.println(a[1] + "或" + a[2] + "中有不合法的日期.");
    }
    
    public static int Caulate(int[] year, int[] day)//计算两年份之间相差天数
    {
        int sum = 0;
        if (year[0] == year[1])
            sum = day[1] - day[0];
        else {
            int jude =Run(year[0]);
            int t = 0;
            if (jude==1)
                t = 366 - day[0];
            else t = 365 - day[0];
            sum = t + day[1];
            for (int i = year[0] + 1; i < year[1]; i++) {
                int flag = Run(i);
                if (flag == 1)
                    sum += 366;
                else sum += 365;
            }
        }
        return sum;
    }
    public static int Run(int year)//判断闰年
    {
        int a = 0;
        if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
            a = 1;
        return a;
    }
    public static int GetWeekday(int a)//判断是当周第几天
    {
        String[] weeks = {"7", "1", "2", "3", "4", "5", "6"};
        String s = weeks[a-1];
        int weekday=0;
        if (s.equals("1"))
            weekday=1;
        if (s.equals("2"))
            weekday=2;
        if (s.equals("3"))
            weekday=3;
        if (s.equals("4"))
            weekday=4;
        if (s.equals("5"))
            weekday=5;
        if (s.equals("6"))
            weekday=6;
        if (s.equals("7"))
            weekday=7;
        return weekday;
    }
}
View Code

7-4 小明走格子

分数 15 作者 朱允刚 单位 吉林大学

从A点到B点有n个格子,小明现在要从A点到B点,小明吃了些东西,补充了一下体力,他可以一步迈一个格子,也可以一步迈两个格子,也可以一步迈3个格子,也可以一步迈4个格子。请编写程序计算小明从A点到B点一共有多少种走法。

grid2.jpg

输入格式:

输入包含多组数据,第一行为一个整数m,m不超过10000,表示输入数据组数。接下来m行,每行为一个整数n(保证对应的输出结果小于231),表示从A点到B点的格子数。

输出格式:

输出为m个整数,表示对于每组数据小明从A点到B点的走法数。

输入样例:

2
5
3

输出样例:

15
4
import java.util.Scanner;
public class Main{
    public static void main(String[] args){
        Scanner input=new Scanner(System.in);
        int n= input.nextInt();
        long[] b=new long[1000];
        int[] a=new int[200];
        b[0]=1;
        b[1]=1;
        b[2]=2;
        b[3]=4;
        b[4]=8;
     for(int i=1;i<=n;i++)
     {
         if(i<n)
         {
            a[i]=input.nextInt();
            if(a[i]<5)
                System.out.println(b[a[i]]);
            else
            { 
                for(int j=5;j<=a[i];j++)
                b[j]=2*b[j-1]-b[j-5];
                System.out.println(b[a[i]]);
            }
         }
         if(i==n)
         {
            a[i]=input.nextInt();
            if(a[i]<5)
                System.out.print(b[a[i]]);
            else
            { 
                for(int j=5;j<=a[i];j++)
                b[j]=2*b[j-1]-b[j-5];
                System.out.print(b[a[i]]);
            }
         }
     }
}
}

第三次作业:较难

7-1 菜单计价程序-3

分数 30 作者 蔡轲 单位 南昌航空大学

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

输入内容按先后顺序包括两部分:菜单、订单,最后以"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

7-2 有重复的数据

分数 10 作者 翁恺 单位 浙江大学

在一大堆数据中找出重复的是一件经常要做的事情。现在,我们要处理许多整数,在这些整数中,可能存在重复的数据。

你要写一个程序来做这件事情,读入数据,检查是否有重复的数据。如果有,输出“YES”这三个字母;如果没有,则输出“NO”。

输入格式:

你的程序首先会读到一个正整数n,n∈[1,100000],然后是n个整数。

输出格式:

如果这些整数中存在重复的,就输出:

YES

否则,就输出:

NO

输入样例:

5
1 2 3 1 4

输出样例:



YES



import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int n=input.nextInt();
        int [] a = new int[n];
        int flag=0;
        for(int i=0;i<n;i++){
            a[i]=input.nextInt();
            for(int j=0;j<i;j++){
                if(a[i]==a[j]){
                    flag=1;
                    break;
            }
        }
        }
        if(flag==1)
            System.out.print("YES");
        else
            System.out.print("NO");
    }
}
View Code

7-4 单词统计与排序

分数 15 作者 张峰 单位 山东科技大学

从键盘录入一段英文文本(句子之间的标点符号只包括“,”或“.”,单词之间、单词与标点之间都以" "分割。
要求:按照每个单词的长度由高到低输出各个单词(重复单词只输出一次),如果单词长度相同,则按照单词的首字母顺序(不区分大小写,首字母相同的比较第二个字母,以此类推)升序输出。

输入格式:

一段英文文本。

输出格式:

按照题目要求输出的各个单词(每个单词一行)。

输入样例:

Hello, I am a student from China.

输出样例:

student
China
Hello
from
am
a
I
 
import java.util.Scanner;

public class Main{
    public static void main(String [] args){
        Scanner input = new Scanner(System.in);
        String a = input.nextLine();
        String[]b = a.split("\\ |\\.|\\, ");
        for (int i = 0; i < b.length; i++) {
            int length1 = b[i].length();
            for (int j = 0; j < i; j++) {
                int length2 = b[j].length();
                if (length1 > length2) {
                    String t = "";
                    t = b[i];
                    b[i] = b[j];
                    b[j] = t;
                }
                }
        }
        for (int i=0; i<b.length;i++) {
         if(i==b.length-1) {
          break;
         }
               int length1 = b[i].length();
                int length2 = b[i+1].length();
                if (length1 == length2) {
                 char f=b[i].charAt(0);
                 char e=b[i+1].charAt(0);
                 if(f>e||(f<e&&(f>='A'&&f<='Z')&&(e>='a'&&e<='z'))) {
                  String t = "";
                     t = b[i];
                        b[i] = b[i+1];
                        b[i+1] = t;
                 }
                }
             }
         for(int i=0;i<b.length;i++){
          System.out.println(b[i]);
         }
          }
        }
View Code 7-7 判断两个日期的先后,计算间隔天数、周数 分数 15 作者 吴光生 单位 新余学院

从键盘输入两个日期,格式如:2022-06-18。判断两个日期的先后,并输出它们之间间隔的天数、周数(不足一周按0计算)。

预备知识:通过查询Java API文档,了解Scanner类中nextLine()等方法、String类中split()等方法、Integer类中parseInt()等方法的用法,了解LocalDate类中of()、isAfter()、isBefore()、until()等方法的使用规则,了解ChronoUnit类中DAYS、WEEKS、MONTHS等单位的用法。

输入格式:

输入两行,每行输入一个日期,日期格式如:2022-06-18

输出格式:

第一行输出:第一个日期比第二个日期更早(晚)
第二行输出:两个日期间隔XX天
第三行输出:两个日期间隔XX周

输入样例1:

2000-02-18
2000-03-15

输出样例1:

第一个日期比第二个日期更早
两个日期间隔26天
两个日期间隔3周

输入样例2:

2022-6-18
2022-6-1
 

输出样例2:

第一个日期比第二个日期更晚
两个日期间隔17天
两个日期间隔2周
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Scanner;
import java.util.Calendar;
import java.util.Date;

public class Main {
    public static void main(String[] args) throws ParseException {
        Scanner in = new Scanner(System.in);
        String[] r = new String[2];
        for (int i = 0; i < r.length; i++)
            r[i] = in.nextLine();
        int[] year = new int[2];
        int[] day = new int[2];
        int[] week = new int[2];
        int[] month = new int[2];
        for (int i = 0; i < r.length; i++)
        {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            Date date = sdf.parse(r[i]);
            Calendar a = Calendar.getInstance();//(获取日历对象)Date对象转换成Calendar对象
            a.setTime(date);
            year[i] = a.get(Calendar.YEAR);//表示年份
            day[i] = a.get(Calendar.DAY_OF_YEAR);//本年中第几天
            week[i] = a.get(Calendar.WEEK_OF_YEAR);//本年中的第几个星期
            month[i] = a.get(Calendar.MONTH);//表示月份
        }
        int tian = 0;
        int zhou = 0;
        if (year[0] > year[1])
        {
            System.out.println("第一个日期比第二个日期更晚");
            tian = days(year,day);
            zhou = tian/7;
        } 
      else if (year[0] == year[1])
        {
            if (month[0] > month[1])
            {
                System.out.println("第一个日期比第二个日期更晚");
                tian = day[0] - day[1];
                zhou = tian/7;
            }
            else if(month[0] == month[1])
            {
                if(day[0] > day[1])
                {
                    System.out.println("第一个日期比第二个日期更晚");
                    tian = day[0] - day[1];
                    zhou = tian/7;
                }
                else
                {
                    System.out.println("第一个日期比第二个日期更早");
                    tian = day[1] - day[0];
                    zhou = tian/7;
                }
            }
      }
    }
View Code
采坑心得

看题要看完全,考虑完全,不然到后面都不知道自己错哪。

 

主要困难以及改进建议

1、代码除了能否运行之外,还要注重代码本身的稳定性和健壮性,在相应题目的编码改进方面,我觉得可以考虑通过优化算法、增加注释、精简代码等方式来提高代码质量和可读性。另外,在提交源码之前,要仔细检查代码的逻辑和精度,确保答案的正确性。

2、在解题过程中我会由于对知识点的不熟悉导致无从下手,得反复翻看Java书本内容才能上手,尤其是7-1 菜单计价程序-1、7-2 菜单计价程序-2、菜单计价程序-3,在类与类之间属性与方法之间的相互调用会让我弄不清。

总结

1、这三次作业包含的知识点很广泛,极大的补充了我的知识库,让我对java这门语言有了更深入的了解,也让我学会了更好的自主学习,自我学习。

2、要多花一点时间在学习java上,java中的已经定义的类是非常多的,仅仅是写题目的时候用一次只能有一个粗略映像,需要花其他时间去巩固。此外,在写题目时,自己需要更有耐心一点,不要急于求成,也不要不带脑子写代码,使得写出的代码不仅得分不高,质量还低。

标签:输出,String,int,样例,BLOG,Dish,输入
From: https://www.cnblogs.com/hzh666/p/17428712.html

相关文章

  • PTA 1—3次题目集总结 Blog1
    一.前言前三次题目集总的来说知识点很多,题量也很大,除了第一次题目简单,第二三次题目的难度跨度太大了,第一次都是很基础的题目,第二三次题目难度突然提高很多,措不及防,完成得很困难,由于菜单计价系统是第一次写,难度很大,完成的不太好。二.设计与分析第一次题目集:总的来说,第一次题目......
  • PTA题目集1~3的总结性Blog
    一、前言:我通过学习面向对象程序设计这门课程,深入掌握了Java语言的知识。截至目前,三个PTA作业,这些作业主要涉及Java的结构、类的运用、以及一些方法的使用,其中类的应用是重点。这三次作业的难度逐渐加大,同时作业量也在逐步增加。最令我印象深刻的是点菜,每一次都让我心如焦土,无可......
  • BLOG-1
    一、题目集分析本次博客将对PTA的前三次题目集进行分析,情况如下:(1)题量分析:第一次练习共计9题第二次练习共计4题第三次练习共计7题从题量而言,数量适中。(2)知识点分析:第一次题目集更侧重于编程基础,主要涉及基本数据类型,也涉及部分引用类型,其次还多用到流程控制当中的if......
  • blog1
    前言    菜单类题目之外的其他的小题目都还好,差不多都做出来了,在做这些题目的同时我也学会了很多java语言的知识,明白了合理用JAVA中包含的自带的函数是一种便捷高效的方法 显而易见,此三次的PTA作业所考察的知识点以及难度呈现不断变大的趋势。PTA1作业难度简单,虽然题目量......
  • 数字名片工具 BBlog:使用一个链接,快速创建和分享你的信息主页和数字花园
    数字名片BBlog:使用一个链接,快速创建和分享你的信息主页和数字花园随着移动互联网技术的快速发展,数字名片产品已成为现代社交和网络营销的重要工具。数字名片可以帮助个人和企业在各种场合中展示和分享联系信息,同时还具有便捷、环保、易于管理等诸多优点。在本文中,我们将介绍......
  • xxxxhttps://blog.csdn.net/holecloud/article/details/80139297
    #include"stdafx.h"#include<opencv2\imgproc\imgproc.hpp>#include<windows.h>#include<opencv2/opencv.hpp>#include<cmath>#include<iostream>//#include"DetectPackage.h"#include<cmath>usin......
  • BLOG-1 (PTA 1~3)
    前言在本阶段的三次题目集中,我们主要涉及了菜单计价程序的设计与实现。这些题目涵盖了点菜订单的处理、菜品价格计算、代点菜功能以及总价的计算等方面的内容。通过完成这些题目,我们可以加深对Java编程语言的理解,熟悉面向对象的设计思想,并应用这些知识解决实际问题。设计与分析......
  • 题目集 1~3 的总结性 Blog
    前言:题目集1~3的知识点、题量、难度等情况如下:知识点:JAVA基础,基础算法,面向对象程序设计题量:共计3道题目难度:题目从易到难,分为三个层次,分别为入门、中等和高级设计与分析:本次Blog重点分析菜单计价系列题目,即题目集2的7-1、7-2以及题目集3的7-1。这三......
  • Blog说明
    较新的博客中的代码会删除所有的省源,namespace,快读和宏定义等CF的题解有时会删去主程序这里给出删除部分,由于本人模板的更新,不保证加上之后的代码可以通过#include<cstdio>#include<cmath>#include<iostream>#include<cstring>#include<algorithm>#include<queue>......
  • Typora关联博客园-cnblog
    Typora关联博客园在Typora写完笔记需要上传到博客园时,就会出现图片显示不出来的情况,这个时候就需要考虑将Typora和博客园关联起来,实现联动。实现方案环境准备系统环境:win11软件版本:dotnet-sdk-5.0.408-win-x64下载地址:https://dotnet.microsoft.com/learn/dotnet/hello-wo......