题目描述
给定一行句子,每个词之间用空格隔开,要么是全小写英文单词,要么是全大写英文单词,要么是自然数。
要求将这些单词倒序输出。而且对于每个单词,如果是小写词,应当转为大写;如果是大写词,应当转为小写;如果是自然数,应该倒转输出
举一个例子:
we choose TO go 2 the 123 moon
程序应当输出:
MOON 321 THE 2 GO to CHOOSE WE
输入格式
仅一行,即需要反转的句子。
输出格式
仅一行,表示程序对句子的处理结果。
mport java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String s = scan.nextLine();//输入
StringBuilder str = new StringBuilder();//用来输出答案的字符串
StringBuilder a = new StringBuilder();//用于一个单词的字符串
char[] c = s.toCharArray();//拼接字符串
for (int i = c.length - 1; i >= 0; i--) {//按题目要求倒叙遍历更加方便
if (c[i] == ' ') {
if (!a.isEmpty()) {//非空判断
int k = a.charAt(0) - '0';
if (k >= 0 && k <= 9) {
a.reverse();//字符串转换
}
}
str.append(a + " ");
a = new StringBuilder();
} else {
char x = c[i];
if (x >= 'a' && x <= 'z' || x >= 'A' && x <= 'Z') {
x ^= 32;//小技巧:大小写转换可直接^
}
a.insert(0, x);
}
}
int k = a.charAt(0) - '0';//保证第一个字符串为数字型时能够兼顾
if (k >= 0 && k <= 9) {
a.reverse();
}
str.append(a);
System.out.println(str);//输出
}
}