CCF认证201403第三题(提交未通过)
来源:互联网 发布:企业版域名注册通 编辑:程序博客网 时间:2024/05/14 03:13
已实测好几组数据通过,但是不知道为什么提交后显示错误,0分
思路:
1、将格式字符串存放于format,输入的命令行存放于字符串数组orderLine;
2、从orderLine取出一条命令行,分割选项/参数,放入ArrayList容器order,从中随后利用函数findOrder,逐个选项判断该选项是否合法(存在),是否带参数
——2.1、选项合法,不带参数-》判断是否在ArrayList容器print已有,做出相应操作
——2.2、选项合法,带参数-》同上,同时往后跳一个参数
——2.3、选项不合法(不存在),长度大于2也不合法,终止
3、输出print的内容,清空print和order,重复2
package exam201403;import java.util.ArrayList;import java.util.Scanner;public class Task3 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String format; int n; //n条命令 format = sc.next(); n = sc.nextInt(); ArrayList<String> print = new ArrayList<String>(); ArrayList<String> order = new ArrayList<String>(); String[] orderLine = new String[n]; String t = sc.next(); for(int i=0; i<n; i++){ orderLine[i] = sc.nextLine(); } for(int i=0; i<n; i++){ String[] items = orderLine[i].split(" "); for(int j=1; j<items.length; j++){ //去掉工具项,加入数组列表 order.add(items[j]); } for(int j=0; j<order.size(); j++){ //逐词分析命令行 String orderItem = order.get(j); if(orderItem.length() != 2){ //不是选项、参数,退出 break; } if(orderItem.charAt(0) == '-'){ //是选项 int flag = findOrder(format, order.get(j).charAt(1)); if(flag == 1){ //如果是不带参数的,且不包含 if(!print.contains(orderItem)){ print.add(orderItem); } } else if(flag == 2 && j != order.size()-1){ //如果是带参数的,跳过后面的参数 j++; if(print.contains(orderItem)){ //如果已经存在,替换参数 int index = print.indexOf(orderItem); print.set(index+1, order.get(j)); } else{ print.add(orderItem); print.add(order.get(j)); } } else{ //非法输入,退出 break; } } } System.out.print("Case "+(i+1)+": "); for(int j=0; j<print.size(); j++){ System.out.print(print.get(j)+" "); } print.clear(); order.clear(); System.out.println(); } } public static int findOrder(String str, char c){ //在格式字符串中查找 //不带参返回1,带参数返回2,不存在返回-1 for(int i=0; i<str.length(); i++){ if(c == str.charAt(i) && c>='a' && c<='z'){ if(i != str.length()-1 && str.charAt(i+1) == ':'){ return 2; } else{ return 1; } } } return -1; }}
阅读全文
0 0
- CCF认证201403第三题(提交未通过)
- 第五届ccf认证考试第三题
- 2014年首届CCF软件能力认证试题第三题
- 第六届CCF计算机职业资格认证考试题解(第三题)
- 第五届计算机职业资格认证考试CCF (第三题)
- 2014年首届CCF软件能力认证试题第三题 .
- 第九届CCF CSP认证 第三题:权限查询
- CCF第九次认证第三题权限查询参考答案
- 第三届CCF计算机职业资格认证考试题解(C++)
- CCF认证 201403-1 相反数
- CCF认证 201403-1:相反数
- 201403-2 试题名称:窗口(100分)ccf认证
- 201403-1 试题名称:相反数(100分)ccf认证
- 第四次CCF计算机软件能力认证考试题解(Java)--201503--节日--100分通过
- 第三次CCF计算机软件能力认证考试题解(Java)--201412--Z字形扫描--100分通过
- 第二次CCF计算机软件能力认证考试题解(Java)--201409--字符串匹配--100分通过
- 第三次CCF计算机软件能力认证考试题解(Java)--201412--最优灌溉--100分通过
- 第六次CCF计算机软件能力认证考试题解(Java)--201512--数位之和--100分通过
- POJ 2387 Til the Cows Come Home
- ES6学习笔记:迭代器与生成器
- 每日MySQL之008:MySQL权限简介
- 基于Windows安装配置Apache、Tomcat、IIS服务器,Apache、Tomcat、IIS服务器对比
- 谜题1:奇偶性
- CCF认证201403第三题(提交未通过)
- Java 并发专题 : Timer的缺陷 用ScheduledExecutorService替代
- 【安卓基础】06 SQLiteHelper 对安卓数据库操作
- ruby02
- bzoj 2160(manacher+差分)
- hdu 2081 手机短号
- java学习笔记:移位
- MT 102 Multiple Customer Credit Transfer多客户信用转账
- 八大排序算法之-直接插入排序 java代码