标签:
在命令行输入如下命令:
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.输入由用例保证,不会出现不符合要求的输入
输入描述:
输入一行字符串,可以有空格
输出参数个数,分解后的参数,每个参数都独占一行
xcopy /s c:\\ d:\
4 xcopy /s c:\d:\\
1 import java.util.*; 2 public class Main{ 3 public static void main(String[] args) { 4 Scanner sc = new Scanner(System.in); 5 while(sc.hasNext()) { 6 String s = sc.nextLine(); 7 // String[] str = s.split(" "); 8 // System.out.println(str.length); 9 char[] ch = s.toCharArray(); 10 11 List<String> list = new ArrayList<String>(); 12 //未遇到引号,标志位设为false 13 boolean isleftyinhao = false; 14 String temp = ""; 15 for(int i = 0; i < ch.length; i++){ 16 //如果遇到引号,且此时左引号标志位为false,那么判断此引号为左引号 17 if(ch[i] == ‘\"‘ && !isleftyinhao){ 18 isleftyinhao = true; 19 continue; 20 } 21 //如果遇到引号,且此时左引号标志位为true,那么判断此引号为右引号 22 if(ch[i] == ‘\"‘ && isleftyinhao){ 23 isleftyinhao = false; 24 continue; 25 } 26 //遇到引号间空格的情况 27 if(ch[i] == ‘ ‘ && isleftyinhao){ 28 temp += ch[i]; 29 continue; 30 } 31 //遇到正常空格的情况 32 if(ch[i] == ‘ ‘){ 33 list.add(temp); 34 temp =""; 35 continue; 36 } 37 //其他情况 38 temp += ch[i]; 39 } 40 //将最后一个加上 41 list.add(temp); 42 43 //输出 44 System.out.println(list.size()); 45 for(int i = 0; i < list.size(); i++){ 46 System.out.println(list.get(i)); 47 } 48 } 49 } 50 }
一位一位的判断,设好标志位,temp.
标签:
原文地址:http://www.cnblogs.com/lydandan/p/5789380.html