引号内部的分开讨论
import java.util.Scanner;
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            String str = scanner.nextLine();
            List<String> result = function(str);
            System.out.println(result.size());
            for (String ss : result) {
                System.out.println(ss);
            }
        }
    }
    public static List<String> function(String str) {
        ArrayList<String> list = new ArrayList<>();
        if (!str.contains("\"")) {
            for (String jj : str.split(" ")) {
                list.add(jj);
            }
            return list;
        }
        boolean isInner = false;
        int start = str.indexOf("\"");
        if (start == 0) {
            start += 1 ;
            isInner = true;
        } 
        find(str, list, isInner, start);
        return list; 
    } 
    public static void find(String str, List<String> list, boolean isInner, int start) {
        if (start + 1 > str.length()) {
            return;
        }
        if (start > str.lastIndexOf("\"")) {
            String latsString = new String(str.substring(start + 1, str.length()));
            if (latsString.length() > 0 && !latsString.equals(" ")) {
                for (String ss : latsString.split(" ")) {
                    list.add(ss);
                }
            }
            return;
        }
        boolean isInn = isInner;
        if (isInn) { // 判断内容是否在"  " 里面
            int nextInn = str.indexOf("\"", start + 1);
            list.add(new String(str.substring(start, nextInn)));
            isInn = false;
            find(str, list, isInn, nextInn + 1);
        } else {
             String strOut = null;
             int nextOut = start; 
            if (start == str.indexOf("\"")) {
                strOut = new String(str.substring(0, start));
             } else {
                nextOut = str.indexOf("\"", start + 1);
                strOut = new String(str.substring(start + 1, nextOut));
            }
            if (strOut.length() > 0 && !strOut.equals(" ")) {
                String[] tt = strOut.split(" ");
                for (String t : tt) {
                    list.add(t); 
                }
            }
            isInn = true;
            find(str, list, isInn, nextOut + 1);
        }
    }
}