华为OJ——参数解析

题目描述

  在命令行输入如下命令:
    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();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值