题目描述
在命令行输入如下命令: xcopy /s c:\ d:\, 各个参数如下: 参数1:命令字xcopy 参数2:字符串/s 参数3:字符串c:\ 参数4: 字符串d:\
请编写一个参数解析程序,实现将命令行各个参数解析出来。
解析规则: 1.参数分隔符为空格 2.对于用“”包含起来的参数,如果中间有空格,不能解析为多个参数。比如在命令行输入xcopy /s “C:\program files” “d:\”时,参数仍然是4个,第3个参数应该是字符串C:\program files,而不是C:\program,注意输出参数时,需要将“”去掉,引号不存在嵌套情况。 3.参数不定长 4.输入由用例保证,不会出现不符合要求的输入
输入描述: 输入一行字符串,可以有空格
输出描述: 输出参数个数,分解后的参数,每个参数都独占一行
示例1
输入 xcopy /s c:\ d:\ 输出 4 xcopy /s c:\ d:\
实现代码:
思路: ①如果当前为引号,则记录引号的个数quoteNum, ②若不为引号,且不为空格,则sb添加当前字符 ③若不满足上面2个条件(即当前为空格),quoteNum为偶数,则sb添加\n,指令数(count)+1 ④由于有效空格数在字符串中间,所以指令数=有效空格数+1,即最终输出的的count还需额外+1 package cn.c_shuang.test12; import java.util.Scanner; /** * 参数解析 * @author Cshuang * */ public class Main { public static void main(String[] args) { Scanner in=new Scanner(System.in); while(in.hasNext()){ String s=in.nextLine(); int count=0; int quoteNum=0; StringBuilder sb=new StringBuilder(); for (int i = 0; i < s.length(); i++) { if(s.charAt(i)=='\"') quoteNum++; else if(s.charAt(i)!=' '){//说明不为"或者空格 sb.append(s.charAt(i)); }else if(quoteNum%2==0){//说明为空格 sb.append("\n"); count++; } } System.out.println(++count+"\n"+sb.toString()); } in.close(); } }