题目描述太长了, 就不写了
这一题才让我知道原来在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]);
}
}