使用状态机的思想
import java.util.Scanner;
import java.util.*;

public class Main {
    public static int STATE_CHAR = 2;
    public static int STATE_STR = 1;
    public static int STATE_BEGIN = 0;
    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<>();
        int state = STATE_BEGIN;
        int start = 0;
        for (int i = 0; i < str.length(); i++) {
            switch(state) {
                case 0 :
                    if (str.charAt(i) == '\"'){
                        state = STATE_CHAR;
                        start = i;
                    } else if (str.charAt(i) == ' ') {
                        state = STATE_BEGIN;
                    } else {
                        state = STATE_STR;
                        start = i;
                        if (i == str.length() - 1) {
                            list.add(new String(str.substring(start, i + 1)));
                        }
                    }
                    break;
                case 1 :
                    if (str.charAt(i) == ' ' || i == str.length() - 1) {
                        list.add(new String(str.substring(start, i + 1)));
                        start = i;
                        state = STATE_BEGIN;
                    }
                    break;
                case 2 :
                    if(str.charAt(i) == '\"') {
                        list.add(new String(str.substring(start + 1, i)));
                        start = i + 1;
                        state = STATE_BEGIN;
                    }
                    break;
            }
        }
        return list; 
    } 
}