前言
一、作业总结
该次博客作业是对菜单计价程序-4、菜单计价程序-5、期中测试的一次总结。这次的菜单计价程序在之前的基础上进行了更完善的更改升级,菜单计价程序-4在菜单计价程序-3的基础上增加了异常情况的处理,菜单计价程序-5在菜单计价程序-3的基础上增加了特色菜的深入特殊化处理,期中测试则是考察以面向对象思想的编程能力。在这几次的作业中,我对自己的代码在之前的基础上进行了一定的更改,目的是增强自己代码的可读性和灵活性,让自己的代码更完善,通过更合理的分工以及数据的合理储存,让相应的类完成本该属于自己的工作,以及相应的数据放到合理的类中,以达到代码工作和数据处理的合理分配和储存。这几次的作业让我对Java中的面向对象思想更加深刻,对其有了更完善的了解,对于每个分出的类,其中的数据和方法做到谁的工作和数据,就放到对应的类中,这样能做到代码更清晰可读,在符合逻辑的基础上,对代码的更改完善也会变得更轻松简单,一旦发现问题,无论是逻辑上的出错还是编译时代码写错,都能能迅速发现和更改。同时为了完成该次作业,我也学会了try-catch的使用,以及正则表达式的使用。但这几次的作业也同样让我认识到逻辑思维的严谨对一个程序来说有多么重要,这几次的作业都没拿到满分甚至是高分,有很大一部分原因真是因为我考虑的不够严谨,所想的程序总是会遗漏一些特殊情况导致扣分。接下来是我对这三次作业的简要分析。
设计与分析
1.菜单计价程序-4
这道题在菜单计价程序-3的基础上增加了特色菜的处理以及大量异常输入的处理,对于该题我发现原有的代码主体部分不足以满足要求,不好进行增加特色菜和异常处理的代码更改,于是我进行了一定的调整。首先是特色菜的处理。由于特色菜与普通菜都是属于菜品,属于菜品的数据处理工作,所以我在处理菜品的类:Dish类中增加了Boolean T来达到合并的效果,一旦处理数据为特色菜,则T为true,反之为false,这样既避免了多加一个类来处理,又方便了数据的使用。
这样后续的处理区分特色菜和普通菜,并不用花费什么力气,只需要判断Dish类中的T即可。
由于该次作业含大量的异常输入,我第一想到的就是刚学的try-catch来处理。通过含参构造将输入的数据存入Record类或Menu类中或对Record类中的数据进行处理,由于每一种正确输入的格式都是确定且不变的,所以每次输入的数据一旦为异常输入,则不满足方法中参数的格式,从而进行相应的报错处理,这时可以通过try-catch来对异常数据进行相应的处理。在此之前我学了try-catch的使用方法,而try-catch对我的感觉就像是特殊的if-else,通俗地来说就是if报错,则else,也就是一旦try中抛出错误,则catch抓住错误,再通过catch中的代码进行更正。由于try中抛出的错误种类有很多,catch抓住的错误也就要进行一定的处理,比如时间错误:DateTimeException,一旦抛出时间错误,就要用catch(DateTimeException w)来抓住,再通过catch中的代码进行更正,这是对特定错误的处理,而对于一般广泛的无差别错误处理,则可用Exception来抓住所有错误,这是因为其实Java中报错的也是由类来完成,而Exception类是所有报错的类的父类。另外如特殊需要,也可以通过throw new ArithmeticException()语句强行抛出错误。有了以上的基础,我将main类中输入的数据分三个模块处理,代码进行了如下调整
模块一,菜单菜品的输入
这是菜单中菜品数据输入的程序模块,通过while循环来不断重复着菜品输入的过程
这是菜单adddish方法的代码,通过含参构造方法来将数据储存
如之前所说,特色菜和普通菜在菜品输入时的区别就是特色菜后面有个“T”,他们完全可以像如图一样合并为一个方法,在输入时由于仍然采用之前菜单计价程序-3的方法,将一行的数据储存在mation中,再通过split以空格分割成若干份并储存在数组k中,特色菜和普通菜的输入就能用k的长度来区分,从而进行如图操作,如果是特色菜则k的长度为3,将每个数据输入方法中即可,而如果是普通菜,则k的长度是2,在adddish方法的最后一个参数(用来储存标记是否是特色菜,如果该参数为T,则标记该菜为特色菜,也就该菜的dish.T=true)的输入为非“T”的任意一个字符,已达特色菜或普通菜菜品数据储存的目的。这时如果格式并不是菜单菜品的输入,则必然抛出一个异常,由于该异常没有特殊性这时可以用Exception来捕捉异常。此时有两种可能的情况,一种是输入的数据是接下来订单的数据,这样只需要用break语句跳出菜品输入程序的while循环即可,而另一种则是异常数据输入情况,按照题目要求,只需要输出“wrong format”即可,然后在最后进行下一次输入和对输入的分割完成此次循环。接下来轮到订单输入程序模块,该模块又分了多个部分
模块二,订单输入模块
table数据的存入,如果输入数据满足格式,则进行桌子记录,记录该桌订单信息,同时完成了输入空格过多的异常输入情况的处理
对时间错误抛出的捕捉及处理,一旦时间输入不和要求则完成相应的异常输入处理
对点菜和代点菜的处理通过不断的异常抛出及捕捉将点菜和代点菜完成,其余由于格式错误,此时输入的数据要么是删菜要么是下一桌菜的信息要么是异常输入,由下一个catch异常捕捉处理
对删菜的处理,此时输入的数据要么是下一桌菜的信息要么是异常输入,由下一个catch异常捕捉处理
对乱入菜单的处理,由于题目样例中出现订单里出现菜单乱入的情况,对此进行了一定的处理
对table合法其数据非法的处理
对table其他异常输入的处理
根据题目要求,一但table的数据输入错误,那么忽略接下来的所有订单数据,于是可以通过如下代码完成该操作
该模块就是通过题目所给出的异常输入样例来逐一排查处理异常,模块二完成
模块三,最终数据输出
代码如上
这次的作业没拿到高分,主要是因为考虑的情况还是没考虑周全
2.菜单计价程序-5
这次的作业在菜单计价程序-3的基础上增加了特色菜系,每桌菜都有点订单的人名和电话号码,不同于菜单计价程序-4中的特色菜,菜单计价程序-5的特色菜有川菜、晋菜、浙菜之分,而且增加了口味度,在最后对每桌菜订单数据的输出增加了按英文字典顺序输出。首先处理人名、电话数据,由于人名和电话是和订单桌号相联系又对应关系的,我认为人名和电话应该属于table类中的属性,只需要在table类中加入人名、电话号属性即可,又因为每一桌的订单都有可能有特色菜及其口味度,所以又需要增加特色菜数和口味度属性,table类更改代码如下
又因为最后还要进行按人名用英文字典顺序输出,所以要用到每个table类中的name属性,这时排序的工作如果仍然用table类来完成显然有些不太合适,所以我创建了一个shop类,既能储存每个table类的数据,也能调用各个table类中的数据完成排序、输出数据等操作
而排序通过冒泡排序法和compareTo方法来完成,shop类中的tnum为桌号的角标,用以记录table的数量
接下来轮到特色菜的处理,受菜单计价程序-4的启发,我发现点普通菜、点特色菜、代点普通菜、代点特色菜能够用一个方法合并,代码如下
首先对是否有该菜品做判断,然后对特色菜、普通菜输入格式是否正确(特色菜以普通菜的格式输入的错误)做判断,如果都没问题则将数据进行储存处理,然后再看是否是特色菜,如果是,将对该条数据进行特色菜处理
至此大部分的代码以及修改完毕,只需要改main方法即可
由于做这次作业,并没有大量异常输入,并且发现用正则表达式会更简洁,而菜单计价程序-3的main类对数据的处理方面太差,我决定用正则表达式来完成数据的处理。在之前的学习中我了解了正则表达式的用法,首先格式的配对用matches方法,matches判断是否相等boolean返回值,substring[]看字符位置如【0,1】是首位,以此类推、\\d表示配对数字(字符型)"+"代表多位、\\s表示配对空格也可以直接输入空格、\\w表示配对单个字母、\\D表示配对除数字外任何单个字符(包括中文)、[\u4e00-\u9fa5]+匹配多个中文,有了这个知识点作为基础,于是main类对数据的处理就有了如下代码的更改
对菜品输入的处理分为普通菜、特色菜、错误输入,通过while循环来进行菜品的不断输入储存等处理,如果输入的数据分割后的第一个字符串为table说明菜品的输入结束,接下来是订单数据处理,代码如下
通过如上操作可以完成点普通菜、点特色菜、代点普通菜、代点特色菜、删菜的数据处理,同时也完成了菜单超时、菜单格式错误的操作
这次没拿到满分的原因我也不知道,就是有三分怎么都拿不到,想过很多异常情况,但都不是考点
3.期中测试
7-4 测验4-抽象类与接口 分数 40 作者 段喜龙 单位 南昌航空大学在测验3的题目基础上,重构类设计,实现列表内图形的排序功能(按照图形的面积进行排序)。
提示:题目中Shape类要实现Comparable接口。
其中,Main类源码如下(可直接拷贝使用):
public class Main { public static void main(String\[\] args) { // TODO Auto-generated method stub Scanner input = new Scanner(System.in); ArrayList<Shape> list = new ArrayList<>(); int choice = input.nextInt(); while(choice != 0) { switch(choice) { case 1://Circle double radiums = input.nextDouble(); Shape circle = new Circle(radiums); list.add(circle); break; case 2://Rectangle double x1 = input.nextDouble(); double y1 = input.nextDouble(); double x2 = input.nextDouble(); double y2 = input.nextDouble(); Point leftTopPoint = new Point(x1,y1); Point lowerRightPoint = new Point(x2,y2); Rectangle rectangle = new Rectangle(leftTopPoint,lowerRightPoint); list.add(rectangle); break; } choice = input.nextInt(); } list.sort(Comparator.naturalOrder());//正向排序 for(int i = 0; i < list.size(); i++) { System.out.print(String.format("%.2f", list.get(i).getArea()) + " "); } } }
输入格式:
输入图形类型(1:圆形;2:矩形;0:结束输入)
输入图形所需参数
输出格式:
按升序排序输出列表中各图形的面积(保留两位小数),各图形面积之间用空格分隔。
输入样例:
在这里给出一组输入。例如:
1 2.3 2 3.2 3 6 5 1 2.3 0
输出样例:
在这里给出相应的输出。例如:
5.60 16.62 16.62
1 import java.util.ArrayList; 2 import java.util.Comparator; 3 import java.util.Scanner; 4 public class Main { 5 public static void main(String[] args) { 6 // TODO Auto-generated method stub 7 Scanner input = new Scanner(System.in); 8 ArrayList<Shape> list = new ArrayList<>(); 9 10 int choice = input.nextInt(); 11 12 while(choice != 0) { 13 switch(choice) { 14 case 1://Circle 15 double radiums = input.nextDouble(); 16 Shape circle = new Circle(radiums); 17 list.add(circle); 18 break; 19 case 2://Rectangle 20 double x1 = input.nextDouble(); 21 double y1 = input.nextDouble(); 22 double x2 = input.nextDouble(); 23 double y2 = input.nextDouble(); 24 Point leftTopPoint = new Point(x1,y1); 25 Point lowerRightPoint = new Point(x2,y2); 26 Rectangle rectangle = new Rectangle(leftTopPoint,lowerRightPoint); 27 list.add(rectangle); 28 break; 29 } 30 choice = input.nextInt(); 31 } 32 33 list.sort(Comparator.naturalOrder());//正向排序 34 35 for(int i = 0; i < list.size(); i++) { 36 System.out.print(String.format("%.2f", list.get(i).getArea()) + " "); 37 } 38 } 39 } 40 41 class Circle extends Shape { 42 private double a; 43 44 public Circle(double a) { 45 this.a = a; 46 } 47 48 public double getA() { 49 return a; 50 } 51 52 public void setA(double a) { 53 this.a = a; 54 } 55 56 @Override 57 public double getArea() { 58 return Math.PI*this.a*this.a; 59 } 60 61 } 62 class Rectangle extends Shape{ 63 Point topLeftPoint = new Point(); 64 Point lowerRightPoint = new Point(); 65 66 public Rectangle(Point topLeftPoint, Point lowerRightPoint) { 67 this.topLeftPoint = topLeftPoint; 68 this.lowerRightPoint = lowerRightPoint; 69 } 70 71 public Rectangle() { 72 } 73 74 @Override 75 public double getArea() { 76 return Math.abs(getHeight()*getLength()); 77 } 78 79 public Point getTopLeftPoint() { 80 return topLeftPoint; 81 } 82 83 public void setTopLeftPoint(Point topLeftPoint) { 84 this.topLeftPoint = topLeftPoint; 85 } 86 87 public Point getLowerRightPoint() { 88 return lowerRightPoint; 89 } 90 91 public void setLowerRightPoint(Point lowerRightPoint) { 92 this.lowerRightPoint = lowerRightPoint; 93 } 94 double getLength(){ 95 return getLowerRightPoint().getX()-getTopLeftPoint().getX(); 96 } 97 double getHeight(){ 98 return getTopLeftPoint().getY()-getLowerRightPoint().getY(); 99 } 100 101 } 102 class Point{ 103 double x; 104 double y; 105 106 public Point(double x, double y) { 107 this.x = x; 108 this.y = y; 109 } 110 111 public Point() { 112 } 113 114 public double getX() { 115 return x; 116 } 117 118 public void setX(double x) { 119 this.x = x; 120 } 121 122 public double getY() { 123 return y; 124 } 125 126 public void setY(double y) { 127 this.y = y; 128 } 129 } 130 class Shape implements Comparable<Shape>{ 131 public Shape() { 132 } 133 134 public double getArea(){ 135 return 0; 136 }; 137 138 @Override 139 public int compareTo(Shape shape) { 140 double s1,s2; 141 s1 = getArea(); 142 s2 = shape.getArea(); 143 if(s1>s2) 144 return 1; 145 else if(s1<s2) 146 return -1; 147 return 0; 148 } 149 }
采坑心得
看题要看完全,考虑完全,不然到后面都不知道自己错哪。
主要困难以及改进建议
1、代码除了能否运行之外,还要注重代码本身的稳定性和健壮性,在相应题目的编码改进方面,我觉得可以考虑通过优化算法、增加注释、精简代码等方式来提高代码质量和可读性。另外,在提交源码之前,要仔细检查代码的逻辑和精度,确保答案的正确性。
2、在解题过程中我会由于对知识点的不熟悉导致无从下手,得反复翻看Java书本内容才能上手,尤其是菜单计价程序-4、菜单计价程序-5,在类与类之间属性与方法之间的相互调用会让我弄不清。
总结
1、这三次作业包含的知识点很广泛,极大的补充了我的知识库,让我对java这门语言有了更深入的了解,也让我学会了更好的自主学习,自我学习。
2、要多花一点时间在学习java上,java中的已经定义的类是非常多的,仅仅是写题目的时候用一次只能有一个粗略映像,需要花其他时间去巩固。此外,在写题目时,自己需要更有耐心一点,不要急于求成,也不要不带脑子写代码,使得写出的代码不仅得分不高,质量还低。
第一次作业:
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
![复制代码](https://common.cnblogs.com/images/copycode.gif)
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"); } }
![复制代码](https://common.cnblogs.com/images/copycode.gif)
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
![复制代码](https://common.cnblogs.com/images/copycode.gif)
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); } }
![复制代码](https://common.cnblogs.com/images/copycode.gif)
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
![复制代码](https://common.cnblogs.com/images/copycode.gif)
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); } }
![复制代码](https://common.cnblogs.com/images/copycode.gif)
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
![复制代码](https://common.cnblogs.com/images/copycode.gif)
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); } }
![复制代码](https://common.cnblogs.com/images/copycode.gif)
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
![复制代码](https://common.cnblogs.com/images/copycode.gif)
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"); } }
![复制代码](https://common.cnblogs.com/images/copycode.gif)
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
![复制代码](https://common.cnblogs.com/images/copycode.gif)
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); } }
![复制代码](https://common.cnblogs.com/images/copycode.gif)
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
![复制代码](https://common.cnblogs.com/images/copycode.gif)
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); } }
![复制代码](https://common.cnblogs.com/images/copycode.gif)
7-9 二进制数值提取
分数 10 作者 蔡轲 单位 南昌航空大学在一个字符串中提取出其中的二进制数值序列,。
输入格式:
一个由0、1构成的序列,以-1为结束符,非0、1字符视为正常输入,但忽略不计,未包含结束符的序列视为非法输入。例如:abc00aj014421-1
输出格式:
将输入的序列去掉非0、1字符以及结尾符的数据内容,
注:结束符-1之后的0\1字符忽略不计。
例如:00011。
输入样例:
在这里给出一组输入。例如:
abc00aj014421-1
输出样例:
在这里给出相应的输出。例如:
00011
输入样例1:
在这里给出一组输入。例如:
a0571-1k001y
输出样例1:
在这里给出相应的输出。例如:
01
![复制代码](https://common.cnblogs.com/images/copycode.gif)
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"); } } }
![复制代码](https://common.cnblogs.com/images/copycode.gif)
第二次作业:
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
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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:
订单中包含删除记录。例如:
![复制代码](https://common.cnblogs.com/images/copycode.gif)
麻婆豆腐 12 油淋生菜 9 1 麻婆豆腐 2 2 2 油淋生菜 1 3 1 delete end
![复制代码](https://common.cnblogs.com/images/copycode.gif)
输出样例1:
在这里给出相应的输出。例如:
1 麻婆豆腐 36 2 油淋生菜 27 27
输入样例2:
订单中包含不存在的菜品记录。例如:
![复制代码](https://common.cnblogs.com/images/copycode.gif)
麻婆豆腐 12 油淋生菜 9 1 麻婆豆腐 2 2 2 油淋生菜 1 3 3 麻辣鸡丝 1 2 end
![复制代码](https://common.cnblogs.com/images/copycode.gif)
输出样例2:
在这里给出相应的输出。例如:
1 麻婆豆腐 36 2 油淋生菜 27 麻辣鸡丝 does not exist 63
输入样例3:
订单中包含删除信息以及不存在的菜品记录。例如:
![复制代码](https://common.cnblogs.com/images/copycode.gif)
麻婆豆腐 12 油淋生菜 9 1 麻婆豆腐 2 2 2 油淋生菜 1 3 3 麻辣鸡丝 1 2 1 delete 7 delete end
![复制代码](https://common.cnblogs.com/images/copycode.gif)
输出样例3:
在这里给出相应的输出。例如:
1 麻婆豆腐 36 2 油淋生菜 27 麻辣鸡丝 does not exist delete error; 27
输入样例4:
订单中包含删除信息以及不存在的菜品记录。例如:
![复制代码](https://common.cnblogs.com/images/copycode.gif)
麻婆豆腐 12 油淋生菜 9 1 麻婆豆腐 2 2 2 油淋生菜 1 3 3 麻辣鸡丝 1 2 5 delete 7 delete end
![复制代码](https://common.cnblogs.com/images/copycode.gif)
输出样例4:
在这里给出相应的输出。例如:
![复制代码](https://common.cnblogs.com/images/copycode.gif)
1 麻婆豆腐 36 2 油淋生菜 27 麻辣鸡丝 does not exist delete error; delete error; 63
![复制代码](https://common.cnblogs.com/images/copycode.gif)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
7-3 jmu-java-日期类的基本使用
分数 15 作者 郑如滨 单位 集美大学- 给定一个日期,判定是否为合法日期。如果合法,判断该年是否闰年,该日期是当年第几天、当月第几天、当周第几天、。
- 给定起始日期与结束日期,判定日期是否合法且结束日期是否早于起始日期。如果均合法,输出结束日期与起始日期之间的相差的天数、月数、念书。
输入格式:
第一行输入一个日期字符串,格式为"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,不合法!
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
7-4 小明走格子
分数 15 作者 朱允刚 单位 吉林大学从A点到B点有n个格子,小明现在要从A点到B点,小明吃了些东西,补充了一下体力,他可以一步迈一个格子,也可以一步迈两个格子,也可以一步迈3个格子,也可以一步迈4个格子。请编写程序计算小明从A点到B点一共有多少种走法。
输入格式:
输入包含多组数据,第一行为一个整数m,m不超过10000,表示输入数据组数。接下来m行,每行为一个整数n(保证对应的输出结果小于231),表示从A点到B点的格子数。
输出格式:
输出为m个整数,表示对于每组数据小明从A点到B点的走法数。
输入样例:
2 5 3
输出样例:
15 4
![复制代码](https://common.cnblogs.com/images/copycode.gif)
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]]); } } } } }
![复制代码](https://common.cnblogs.com/images/copycode.gif)
第三次作业:较难
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+英文空格+桌号+“:”+英文空格+当前桌的总价
本次题目不考虑其他错误情况,如:桌号、菜单订单顺序颠倒、不符合格式的输入、序号重复等,在本系列的后续作业中会做要求。
输入样例:
在这里给出一组输入。例如:
![复制代码](https://common.cnblogs.com/images/copycode.gif)
麻婆豆腐 12 油淋生菜 9 table 1 2023/3/22 12/2/3 1 麻婆豆腐 2 2 2 油淋生菜 1 3 end
![复制代码](https://common.cnblogs.com/images/copycode.gif)
输出样例:
在这里给出相应的输出。例如:
table 1: 1 麻婆豆腐 36 2 油淋生菜 27 table 1: 38
输入样例1:
在这里给出一组输入。例如:
![复制代码](https://common.cnblogs.com/images/copycode.gif)
麻婆豆腐 12 油淋生菜 9 table 1 2023/3/22 17/0/0 1 麻婆豆腐 2 2 2 油淋生菜 1 3 1 delete end
![复制代码](https://common.cnblogs.com/images/copycode.gif)
输出样例1:
在这里给出相应的输出。例如:
table 1: 1 麻婆豆腐 36 2 油淋生菜 27 table 1: 22
输入样例2:
在这里给出一组输入。例如:
![复制代码](https://common.cnblogs.com/images/copycode.gif)
麻婆豆腐 12 油淋生菜 9 table 1 2023/3/22 16/59/59 1 麻婆豆腐 2 2 2 油淋生菜 1 3 1 delete end
![复制代码](https://common.cnblogs.com/images/copycode.gif)
输出样例2:
在这里给出相应的输出。例如:
table 1: 1 麻婆豆腐 36 2 油淋生菜 27 table 1 out of opening hours
输入样例3:
在这里给出一组输入。例如:
![复制代码](https://common.cnblogs.com/images/copycode.gif)
麻婆豆腐 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
![复制代码](https://common.cnblogs.com/images/copycode.gif)
输出样例3:
在这里给出相应的输出。例如:
![复制代码](https://common.cnblogs.com/images/copycode.gif)
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
![复制代码](https://common.cnblogs.com/images/copycode.gif)
输入样例4:
在这里给出一组输入。例如:
![复制代码](https://common.cnblogs.com/images/copycode.gif)
麻婆豆腐 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
![复制代码](https://common.cnblogs.com/images/copycode.gif)
输出样例4:
在这里给出相应的输出。例如:
![复制代码](https://common.cnblogs.com/images/copycode.gif)
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
![复制代码](https://common.cnblogs.com/images/copycode.gif)
7-2 有重复的数据
分数 10 作者 翁恺 单位 浙江大学在一大堆数据中找出重复的是一件经常要做的事情。现在,我们要处理许多整数,在这些整数中,可能存在重复的数据。
你要写一个程序来做这件事情,读入数据,检查是否有重复的数据。如果有,输出“YES
”这三个字母;如果没有,则输出“NO
”。
输入格式:
你的程序首先会读到一个正整数n,n∈[1,100000],然后是n个整数。
输出格式:
如果这些整数中存在重复的,就输出:
YES
否则,就输出:
NO
输入样例:
5 1 2 3 1 4
输出样例:
YES
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
7-4 单词统计与排序
分数 15 作者 张峰 单位 山东科技大学从键盘录入一段英文文本(句子之间的标点符号只包括“,”或“.”,单词之间、单词与标点之间都以" "分割。
要求:按照每个单词的长度由高到低输出各个单词(重复单词只输出一次),如果单词长度相同,则按照单词的首字母顺序(不区分大小写,首字母相同的比较第二个字母,以此类推)升序输出。
输入格式:
一段英文文本。
输出格式:
按照题目要求输出的各个单词(每个单词一行)。
输入样例:
Hello, I am a student from China.
输出样例:
![复制代码](https://common.cnblogs.com/images/copycode.gif)
student China Hello from am a I
![复制代码](https://common.cnblogs.com/images/copycode.gif)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
从键盘输入两个日期,格式如: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周
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
采坑心得
看题要看完全,考虑完全,不然到后面都不知道自己错哪。
主要困难以及改进建议
1、代码除了能否运行之外,还要注重代码本身的稳定性和健壮性,在相应题目的编码改进方面,我觉得可以考虑通过优化算法、增加注释、精简代码等方式来提高代码质量和可读性。另外,在提交源码之前,要仔细检查代码的逻辑和精度,确保答案的正确性。
2、在解题过程中我会由于对知识点的不熟悉导致无从下手,得反复翻看Java书本内容才能上手,尤其是7-1 菜单计价程序-1、7-2 菜单计价程序-2、菜单计价程序-3,在类与类之间属性与方法之间的相互调用会让我弄不清。
总结
1、这三次作业包含的知识点很广泛,极大的补充了我的知识库,让我对java这门语言有了更深入的了解,也让我学会了更好的自主学习,自我学习。
2、要多花一点时间在学习java上,java中的已经定义的类是非常多的,仅仅是写题目的时候用一次只能有一个粗略映像,需要花其他时间去巩固。此外,在写题目时,自己需要更有耐心一点,不要急于求成,也不要不带脑子写代码,使得写出的代码不仅得分不高,质量还低。
好文要顶 关注我 收藏该文![](https://common.cnblogs.com/images/icon_weibo_24.png)
![](https://common.cnblogs.com/images/wechat.png)
![](https://pic.cnblogs.com/face/3177280/20230418210527.png)
粉丝 - 0 关注 - 0 0 0
» 下一篇: BLOG-3 posted @ 2023-05-24 19:54 雪泥鸡爪 阅读(29) 评论(0) 编辑 收藏 举报 刷新评论刷新页面返回顶部 发表评论 编辑预览 自动补全
[Ctrl+Enter快捷键提交]
编辑推荐:· 闲来无事-树莓派控制风扇启停
· ASP.NET Core 6框架揭秘实例演示[40]:基于角色的授权
· 记一次字符串末尾空白丢失的排查,MySQL 是会玩的!
· 记一次 .NET 某旅行社审批系统 崩溃分析
· C#/.Net的多播委托到底是啥?彻底剖析下 阅读排行:
· 11k+ Star 一款更适合中国用户的开源 BI 工具
· 三年,能否成为一名真正的架构师
· 闲来无事-树莓派控制风扇启停
· 记一次.net加密神器 Eazfuscator.NET 2023.2 最新版 使用尝试
· 如何在.net6webapi中记录每次接口请求的日志 昵称: 雪泥鸡爪
园龄: 2个月
粉丝: 0
关注: 0
|
|||||||||
日 | 一 | 二 | 三 | 四 | 五 | 六 | |||
---|---|---|---|---|---|---|---|---|---|
28 | 29 | 30 | 31 | 1 | 2 | 3 | |||
4 | 5 | 6 | 7 | 8 | 9 | 10 | |||
11 | 12 | 13 | 14 | 15 | 16 | 17 | |||
18 | 19 | 20 | 21 | 22 | 23 | 24 | |||
25 | 26 | 27 | 28 | 29 | 30 | 1 | |||
2 | 3 | 4 | 5 | 6 | 7 | 8 |