首页 > 其他分享 >PTA题目集1-3总结

PTA题目集1-3总结

时间:2023-10-05 17:34:06浏览次数:59  
标签:总结 题目 int System PTA 日期 println Java out

(1)前言:近一个月来做的三次PTA大作业,第一次题量为九道题,难度较小,但只写出来七道题,剩余两道写出部分,第一次所考察的知识点是一些基础知识,了解Java的输入输出,一些基础的运算符与或非,一些简单的循环控制语句,ifelse ,for等,学习过c语言可以发现一些基础的语法都是差不多的,初学Java最深刻的印象就是Java的输入输出语句比较特殊,还要在头文件位置写一条import语句,Java在新建的时候第一句话里要与自己所新建的类名一致。第二次做的是8个题目,从这里开始就不会了,这里开始就需要类的定义还有一些方法,主要的有学生成绩类,菜单计价程序和日期类的运用,第三次作业是四道大题,更加不会了,第二道课程成绩统计程序啥也不会写。

(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)
//添加一条菜品信息到订单中。
}
以上是菜单计价程序的类的定义,首先定义一个数组保存四个菜品的信息,输入菜品名称当接收end时结束,再接收份额表示大中小分别对应不同的价格,通过switch语句计算每输入一次菜品的名字及份额计算价格,最后计算总的价格并输出。

import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
String []menu =new String[]{"西红柿炒蛋","清炒土豆丝","麻婆豆腐","油淋生菜"};
String dish;
int portion;
int totalPrice = 0;
double price = 0;
int judge = 0;
while(true){
dish = input.next();
if(dish.equals("end")){
break;
}
portion = input.nextInt();
if(portion==1) price = 1;
if(portion==2) price = 1.5;
if(portion==3) price = 2;
if(dish.equals(menu[0])){
judge = 0;
}else if(dish.equals(menu[1])){
judge = 1;
}else if(dish.equals(menu[2])){
judge = 2;
}else if(dish.equals(menu[3])){
judge = 3;
}else{
System.out.println(dish+" does not exist");
continue;
}
switch(judge){
case 0:
totalPrice += Math.round(15 * price);
break;
case 1:
totalPrice += Math.round(12 * price);
break;
case 2:
totalPrice += Math.round(12 * price);
break;
case 3:
totalPrice += Math.round(9 * price);
break;
default:
System.out.println(input+" does not exist");
break;
}
}
System.out.println(totalPrice);
}
}

第二个分析的是日期类题目,要求是输入两个日期判断两个日期的先后并判断两个日期之间相隔多少天多少月多少周,计算日期类可以用Java中一些自带的方法,以下用的是getTime(),通过计算从1970-1-1起到现在的毫秒数来判断日期的先后,通过split可以将日期中的-符号分离从而得到年月日三个数据,throws ParseException,SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");通过这两个可以将输入的日期转为Date类型,这样便于后续的用Java的方法。

import java.util.Scanner;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Main {
public static void main(String[] args) throws ParseException {
Scanner sc = new Scanner(System.in);
String date1 = sc.next();
String date2 = sc.next();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
Date d1=sdf.parse(date1);
Date d2=sdf.parse(date2);
long daysBetween=(d2.getTime()/(60*60*24*1000)-d1.getTime()/(60*60*24*1000));
//System.out.println(daysBetween);
Integer i = date1.compareTo(date2);
long between = Math.abs(daysBetween);
if(i<0)
{
long between1 = between;
int week1 = (int)between1/7;
System.out.println("第一个日期比第二个日期更早");
System.out.println("两个日期间隔"+between1+"天");
System.out.println("两个日期间隔"+week1+"周");
}

if(i>0)
{
//int between3 = ChronoUnit.DAYS.between(date1,date2);
long between2 = between;
int week2 = (int)(between2/7);
System.out.println("第一个日期比第二个日期更晚");
System.out.println("两个日期间隔"+between2+"天");
System.out.println("两个日期间隔"+week2+"周");

}


}
}

(3)踩坑心得:数据类型要匹配,占字节数少的可以转为字节数多的数据类型,占字节数多的数据类型转为少字节数据类型需要强制类型转换在前面加上()括号里写需要转换的数据类型,在最终结果时,注意不同类型的数据类型对结果的精度不同,也会导致结果的判断失误。在日期类转换时注意大小写格式应该为yyyy-MM-dd,当时写成了yyyy-mm-dd,代码没有问题可以运行,但最终结果计算时间毫秒数时会忽略月份所占的毫秒数,可能因为时间类型有时精确到分秒的格式yyyy-MM-dd hh-mm-ss,所以区分大小写。

 

(4)主要困难和改进建议:综合性题目还是不会,代码量多没有思路,无从下手,建议得多练吧从小开始一点点练起。

 

(5)总结:通过这三次作业学到了Java一些基础语法知识,了解了Java的输入输出一些基本的运算符,一些循环等,Java中的类包括了属性和方法,在大的题目中需要用的类,需要经常调用所写的类的属性和方法,同时还要更多了解Java中一些自带的方法可以简化我们工作。

 

标签:总结,题目,int,System,PTA,日期,println,Java,out
From: https://www.cnblogs.com/GuazhuEastRoad/p/17743663.html

相关文章

  • 10.05模拟赛总结
    比赛传送门总结\(100+60+0+0=160\),Rank16,寄寄寄寄寄。T1优秀\(\texttt{/}\)\(\texttt{Good}\)题意求\(l\)和\(r\)之间的\(2\)的整数次幂。分析解法1由于\(l\)和\(r\)非常小,所以可以直接模拟,没啥好说的。时间复杂度\(O(r)\)。解法2充分发扬人类智慧,发......
  • 学年2023-2024-1 学号 20231310《计算机基础与程序设计》第二周学习总结
    作业信息这个作业属于哪个课程https://www.cnblogs.com/rocedu/p/9577842.html这个作业要求在哪里https://www.cnblogs.com/rocedu/p/9577842.html#WEEK02这个作业的目标《计算机科学概论》和《C语言程序设计》第1章并完成云班课测试作业正文https://www.cn......
  • 软件架构设计师历年论文题目(2012-2)
    2.论决策支持系统的开发与应用决策支持系统(DecisionSupportSystems,DSS)是以管理科学、运筹学、控制论和行为科学为基础,以计算机技术、仿真技术和信息技术为手段,以人机交互方式进行半结构化和非结构化决策的信息系统。它调用各种信息资源,并提供各种分析工具,为决策者提供分析问题......
  • 软件架构设计师历年论文题目(2012-3)
    论企业应用系统的数据持久层架构设计数据持久层(DataPersistenceLayer)通常位于企业应用系统的业务逻辑层和数据源层之间,为整个项目提供一个高层、统一、安全、并发的数据持久机制,完成对各种数据进行持久化的编程工作,并为系统业务逻辑层提供服务。它能够使程序员避免手工编写访问......
  • 软件架构设计师历年论文题目(2012-4)
    论基于架构的软件设计方法及应用基于架构的软件设计(Architecture-BasedSoftwareDesign,ABSD)方法以构成软件架构的商业、质量和功能需求等要素来驱动整个软件开发过程。ABSD是一个自顶向下,递归细化的软件开发方法,它以软件系统功能的分解为基础,通过选择架构风格实现质量和商业需......
  • 软件架构设计师历年论文题目(2011-4)
    论软件需求获取技术及应用软件需求是指用户对新系统在功能、行为、性能、设计约束等方面的期望。软件需求获取是一个确定和理解不同的项目干系人的需求和约束的过程。需求获取是否科学、准备充分,对获取的结果影响很大,这是因为大部分用户无法完整地描述需求,而且也不可能看到系统......
  • 软件架构设计师历年论文题目(2012-1)
    论企业信息化规划的实施与应用企业信息化建设是一项长期而艰巨的任务,不可能在短时间内完成。信息化规划是企业信息化建设的纲领和向导,是信息系统设计和实施的前提和依据。信息化规划以整个企业的发展目标和战略、企业各部门的目标与功能为基础,同时结合行业信息化方面的实践和对信......
  • 每日总结
    springboot项目之java.lang.NullPointerException:null问题今天再弄项目的时候出现了这个问题springboot项目报错2023-10-0510:33:01.022ERROR22472---[nio-8080-exec-3]o.a.c.c.C.[.[.[/].[dispatcherServlet]  :Servlet.service()forservlet[dispatcherServlet......
  • 2023-2024-1 20211319《信息安全专业导论》第二周学习总结
    2021-2022-120211408《信息安全专业导论》第周学习总结作业信息这个作业属于哪个课程<班级的链接>(如2023-2024-1-计算机基础与程序设计)这个作业要求在哪里https://www.cnblogs.com/rocedu/p/9577842.html#WEEK02这个作业的目标<写上具体方面>作业正文.........
  • 2023.10.4——每日总结
    学习所花时间(包括上课):0h代码量(行):0行博客量(篇):1篇今天,上午学习+休息,下午学习+休息;我了解到的知识点:1.休息明日计划:学习+休息......