题解 | #参数解析#
参数解析
https://www.nowcoder.com/practice/668603dc307e4ef4bb07bcd0615ea677
1、遍历字符串
2、将字符放入栈中,遇到空格,弹出栈
3、遇到两次引号,第二次弹出引号间的内容
4、如果第一个字符是引号,单独处理
import java.util.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); String cli = in.nextLine(); Stack<Character> sta = new Stack<>(); List<String> result = new ArrayList<>(); Boolean isput = true; for(int i = 0;i<cli.length();i++){ // System.out.println("i="+i+". "+cli.charAt(i)); if(i==0){ while(cli.charAt(i)!=' '){ //进 sta.push(cli.charAt(i)); i++; } i--; //出 StringBuffer sb0 = new StringBuffer(); Character tmp0; while(sta.size()!=0){ tmp0 = sta.pop(); sb0.append(String.valueOf(tmp0)); } result.add(sb0.reverse().toString()); } switch(cli.charAt(i)){ case ' ': sta.push(cli.charAt(i)); i++; if(cli.charAt(i)=='"'){ sta.push(cli.charAt(i)); i++; while(cli.charAt(i)!='\"'){ //进 sta.push(cli.charAt(i)); i++; } //出 StringBuffer sb = new StringBuffer(); Character tmp; while( i<cli.length()&&(tmp = sta.pop()) !='\"'){ if(String.valueOf(tmp)!="\""){ sb.append(String.valueOf(tmp)); } } result.add(sb.reverse().toString()); continue; } while(i<cli.length()&&cli.charAt(i)!=' '){ //进 sta.push(cli.charAt(i)); i++; } i--; //出 StringBuffer sb2 = new StringBuffer(); Character tmp2; while( (tmp2 = sta.pop()) !=' '){ sb2.append(String.valueOf(tmp2)); } result.add(sb2.reverse().toString()); continue; } } System.out.println(result.size()); result.forEach(System.out::println); } }