一.前言
三次PTA题目集过后,算是彻底打击了我的自信心,PTA内容不在只是简单的对语法问题的考察,真正的从“基础”转到“面向对象”,随之而来的是更多的代码量,及消耗我们更多的时间。要学习新的内容并投入实践,和更多代码量给我带来更多的报错问题和非零返回问题,无不在告诉我这次学习有所难度,无不在提醒我要更勤加练习,以适应和掌握新的知识。
三次PTA题目量在逐渐减少,但是难度在逐渐增大,所消耗我的时间也在逐渐增多,而且很令人心痛,我的成绩也在随之减少。题目的更新,让我需要学习新的内容,我也从中掌握了一些新的知识。虽然在与题目抗争过程略显痛苦,但是也算有所收获。
二.设计与分析
第一次题目
题目内容
设计实现答题程序,模拟一个小型的测试,要求输入题目信息和答题信息,根据输入题目信息中的标准答案判断答题的结果。
输入格式:
程序输入信息分三部分:
1、题目数量
格式:整数数值,若超过1位最高位不能为0,
样例:34
2、题目内容
一行为一道题,可以输入多行数据。
格式:"#N:"+题号+" "+"#Q:"+题目内容+" "#A:"+标准答案
格式约束:题目的输入顺序与题号不相关,不一定按题号顺序从小到大输入。
样例:#N:1 #Q:1+1= #A:2
#N:2 #Q:2+2= #A:4
3、答题信息
答题信息按行输入,每一行为一组答案,每组答案包含第2部分所有题目的解题答案,答案的顺序号与题目题号相对应。
格式:"#A:"+答案内容
格式约束:答案数量与第2部分题目的数量相同,答案之间以英文空格分隔。
样例:#A:2 #A:78
2是题号为1的题目的答案
78是题号为2的题目的答案
答题信息以一行"end"标记结束,"end"之后的信息忽略。
输出格式:
1、题目数量
格式:整数数值,若超过1位最高位不能为0,
样例:34
2、答题信息
一行为一道题的答题信息,根据题目的数量输出多行数据。
格式:题目内容+" ~"+答案
样例:1+1=~2
2+2= ~4
3、判题信息
判题信息为一行数据,一条答题记录每个答案的判断结果,答案的先后顺序与题目题号相对应。
格式:判题结果+" "+判题结果
格式约束:
1、判题结果输出只能是true或者false,
2、判题信息的顺序与输入答题信息中的顺序相同
样例:true false true
我的代码
点击查看代码
import java.util.Scanner;
class Topic{
private int topicID;
private String topicCon;
private String standardAnswer;
public Topic(){
}
public Topic(int topicID,String topicCon,String standardAnswer){
super();
this.topicID=topicID;
this.topicCon=topicCon;
this.standardAnswer=standardAnswer;
}
public int getTopicID(){
return topicID;
}
public void setTopicID(int topicID){
this.topicID=topicID;
}
public String getTopicCon(){
return topicCon;
}
public void setTopicCon(String topicCon){
this.topicCon=topicCon;
}
public String getStandAnswer(){
return standardAnswer;
}
public void setStandAnswer(String standardAnswer){
this.standardAnswer=standardAnswer;
}
public boolean judg(String answerArr){
if(this.standardAnswer.equals(answerArr)){
return true;
}
else{
return false;
}
}
}
class Test{
private int queNum;
public Topic[] top=new Topic[100];
public int getQueNum(){
return queNum;
}
public void setQueNum(int queNum){
this.queNum=queNum;
}
public void saveQue(int topicID,Topic top){
this.top[topicID-1]=top;
}
public boolean judetest(int topicID,String standardAnswer){
return top[topicID-1].judg(standardAnswer);
}
public Test(){
}
public Test(int queNum){
super();
this.queNum=queNum;
}
public String getTopic(int topicID){
return top[topicID].getTopicCon();
}
}
class Answer{
private Test test1=new Test();
private String[] answerArr=new String[100];
private boolean[] endArr=new boolean[100];
public Answer(){
}
public Answer(String[] AnswerArr,Test test1){
super();
this.answerArr = AnswerArr;
this.test1 = test1;
}
public String[] getAnswerArr() {
return answerArr;
}
public void setAnswerArr(String[] answerArr) {
this.answerArr = answerArr;
}
public boolean[] getEndArr() {
return endArr;
}
public void setEndArr(boolean[] endArr) {
this.endArr = endArr;
}
public boolean judeanwser(int topicID){
return test1.judetest(topicID,answerArr[topicID-1]);
}
public void saveAns(int topicID,String answerArr){
this.answerArr[topicID]=answerArr;
}
public void putout(int topicID){
System.out.println(test1.top[topicID].getTopicCon()+"~"+answerArr[topicID]);
}
}
public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int queNum=sc.nextInt();
//String[][] topic=new String[queNum][4];
String[] topic=new String[4];
String[] answerArr=new String[queNum];
Topic[] top=new Topic[queNum];
Test test1=new Test();
String fw=sc.nextLine();
for(int i=0;i<queNum;i++){
String str=sc.nextLine();
topic=str.split("#(N|Q|A):");
int qz=Integer.parseInt(topic[1].trim());
top[i]=new Topic(qz,topic[2].trim(),topic[3].trim());
test1.saveQue(qz,top[i]);
}
for(int i=0;i<queNum;i++){
answerArr[i]=sc.next();
answerArr[i]=answerArr[i].replace("#A:"," ").trim();
if(answerArr[i].contains("end"))
break;
}
Answer answerArr1=new Answer(answerArr,test1);
for (int i=0;i<queNum;i++){
answerArr1.putout(i);
}
//System.out.printf("%b ",answerArr1.judeanwser(1));
//System.out.printf("%b ",answerArr1.judeanwser(0));
for(int i=1;i<=queNum;i++){
if(i!=queNum)
System.out.printf("%b ",answerArr1.judeanwser(i));
else
System.out.printf("%b",answerArr1.judeanwser(i));
}
}
}
分析与心得
PowerDesigner的相应类图如下
从PowerDesigner相应类图中很清晰的的看出我的代码中类的关系主要(仅)用了关联