P1098 字符串的展开 遇到的坑(JAVA版)

188 阅读1分钟

题目描述太长了, 就不写了 这一题才让我知道原来在JAVA中的三目运算符使用这么受限 比如说 for(p3 == 1 ? j = before + 1 : j = after - 1; p3 == 1 ? j < after : j > before; p3 == 1 ? j++ : j--这种代码在JAVA中时不行的, 完了, 我想转C++了, 还有, 那个自动类型转换是真的烦人, 比如char a = 0; a = a + 1 这种是不行的, 你得char a = 0; a = (char) (a + 1) 这样好蠢啊(当然, 有可能可以有更好的写法, 如果知道的童靴麻烦告诉本不二一下, 我是JAVA新手 下面附完整JAVA AC代码

import java.util.Scanner;

/**
 * P1098
 */
public class P1098 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int p1 = sc.nextInt();
        int p2 = sc.nextInt();
        int p3 = sc.nextInt();

        String str = sc.next();
        sc.close();

        char[] ch = str.toCharArray();

        char before, after, now, p;
        char j;

        System.out.print(ch[0]);
        for (int i = 1; i < ch.length - 1; i++) {
            before = ch[i - 1];
            after = ch[i + 1];
            now = ch[i];

            if (now == '-' && after > before && (before >= '0' && after <= '9' || before >= 'a' && after <= 'z')) {
                if (p3 == 1) {
                    for (j = ++before; j < after; j++) {
                        p = j;

                        if (p1 == 2) {
                            //说明是大写
                            p = (p > 'a') ? (char)(p - 32) : p;
                        } else if (p1 == 3) {
                            p = '*';
                        }for (int k = 0; k < p2 ; k++) {
                            System.out.print(p);
                        }

                    }
                } else {
                    for (j = --after; j > before; j--) {
                        p = j;

                        if (p1 == 2) {
                            //说明是大写
                            p = (p > 'a') ? (char)(p - 32) : p;
                        } else if (p1 == 3) {
                            p = '*';
                        }for (int k = 0; k < p2 ; k++) {
                        System.out.print(p);
                        }                      
                    }                
                }

                
            } else {
                System.out.print(now);
            }
        }

        System.out.println(ch[ch.length - 1]);
    }
}