还是这样子解题吧,简单易懂

参数解析

https://www.nowcoder.com/practice/668603dc307e4ef4bb07bcd0615ea677

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String string = in.nextLine();
        char[] charArray = string.toCharArray();
        ArrayList<String> list = new ArrayList<>();
        StringBuilder builder = new StringBuilder();
        for (int i = 0; i < charArray.length; i++) {
            char c = charArray[i];
            // 如果是双引号
            if (c == '"') {
                for (int j = i + 1; j < charArray.length; j++) {
                    // 找到下一个双引号
                    if (charArray[j] == '"') {
                        // 切割引号内的参数
                        list.add(string.substring(i + 1, j));
                        // 让最外层循环从下个参数开始
                        i = j + 1;
                        // 结束后i会进行i++,从而不会从空格开始
                        break;
                    }
                }
                continue;
            }

            if (c == ' ') {
                list.add(builder.toString());
                builder = new StringBuilder();
                continue;
            }

            builder.append(c);
        }


        // 在""结束的情况下,builder是上次空格创建的空对象。如xcopy /s c:\\ "d:\\e"
        if (builder.length() > 0) {
            list.add(builder.toString());
        }

        System.out.println(list.size());
        for (String s : list) {
            System.out.println(s);
        }
    }
}

全部评论

相关推荐

12-24 14:26
东北大学 Java
一只乌鸦:重邮+东北,好经典的学校
最后再改一次简历
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务