及其丑陋的代码,基本想法就是找连续的符号,把对应数字排序。有很多特殊情况要考虑。。。。
import java.util.Arrays;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNext()){
            int n = in.nextInt();
            int nums[] = new int[n];
            char op[] = new char[n];
            nums[0] = in.nextInt();
            for (int i=1; i<n; i++){
                op[i] = in.next().charAt(0);
                nums[i] = in.nextInt();
            }
            for (int i=1; i<n;){
                if (op[i] == '+') {
                    int j = i;
                    while (j<n&&op[j]=='+') j++;
                    if (j<n&&(op[j]=='*'||op[j]=='/')){
                        if (i==1){
                            Arrays.sort(nums,i-1,j-1);
                        }
                        else {
                            Arrays.sort(nums,i,j-1);
                        }
                    }
                    else {
                        if (i==1){
                            Arrays.sort(nums,i-1,j);
                        }
                        else {
                            Arrays.sort(nums,i,j);
                        }
                    }
                    i=j;
                }
                else if (op[i] == '-') {
                    int j = i;
                    while (j<n&&op[j]=='-') j++;
                    if (j<n&&(op[j]=='*'||op[j]=='/')){
                        Arrays.sort(nums,i,j-1);
                    }
                    else {
                        Arrays.sort(nums,i,j);
                    }
                    i=j;
                }
                else if (op[i] == '*'){
                    int j=i;
                    while (j<n&&op[j]=='*') j++;
                    if (op[i-1]=='/'){
                        Arrays.sort(nums, i, j);
                    }
                    else {
                        Arrays.sort(nums,i-1,j);
                    }
                    i=j;
                }
                else if (op[i] == '/'){
                    int j=i;
                    while (j<n&&op[j]=='/') j++;
                    Arrays.sort(nums,i,j);
                    i=j;
                }
            }
            System.out.print(nums[0]);
            for (int i=1; i<n; i++){
                System.out.print(" "+op[i]+" "+nums[i]);
            }
            System.out.print("\n");
        }
    }
}