如何实现单个字符的大小写反转?
实现单个字符的大小写反转(Java)
嘿,这个需求其实很容易搞定,我给你两种实用的方案,你可以根据自己的需求选:
方案一:用Java自带的Character工具类(最省心)
Java的java.lang.Character类已经封装好了大小写判断和转换的方法,直接用就行,完全不用自己造轮子。
完整代码示例:
package nine.march.twenty; import java.util.Scanner; public class UpperCaseToLowerCase { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入一个字符:"); // 获取输入的单个字符 char ch = scanner.next().charAt(0); char reversedChar; // 判断是否是小写字母 if (Character.isLowerCase(ch)) { reversedChar = Character.toUpperCase(ch); } // 判断是否是大写字母 else if (Character.isUpperCase(ch)) { reversedChar = Character.toLowerCase(ch); } // 如果输入的不是字母,直接返回原字符 else { reversedChar = ch; System.out.println("输入的不是字母,直接返回原字符:"); } System.out.println("转换后的字符是:" + reversedChar); scanner.close(); } }
代码解释:
- 用
Scanner获取用户输入的字符,通过charAt(0)取输入字符串的第一个字符(毕竟你要的是单个字符输入嘛)。 Character.isLowerCase(ch)判断是不是小写字母,是的话用toUpperCase()转成大写;反之如果是大写字母,用toLowerCase()转成小写。- 额外加了非字母的处理逻辑,避免输入数字、符号这类字符时出错。
方案二:手动操作ASCII码值(理解底层原理)
如果你想搞清楚背后的逻辑,可以直接操作字符的ASCII码:
- 大写字母A-Z的ASCII码范围是65-90
- 小写字母a-z的ASCII码范围是97-122
- 同一字母的大小写ASCII码刚好相差32(比如'A'是65,'a'是97,97-65=32)
所以我们可以通过判断字符的ASCII范围,然后加减32来实现反转:
完整代码示例:
package nine.march.twenty; import java.util.Scanner; public class UpperCaseToLowerCase { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入一个字符:"); char ch = scanner.next().charAt(0); char reversedChar; // 判断是否是小写字母(ASCII 97-122) if (ch >= 'a' && ch <= 'z') { reversedChar = (char) (ch - 32); } // 判断是否是大写字母(ASCII 65-90) else if (ch >= 'A' && ch <= 'Z') { reversedChar = (char) (ch + 32); } // 非字母情况 else { reversedChar = ch; System.out.println("输入的不是字母,直接返回原字符:"); } System.out.println("转换后的字符是:" + reversedChar); scanner.close(); } }
代码解释:
- 这里直接用字符和
'a'、'z'比较,本质就是在比较它们的ASCII码值。 - 小写转大写就减32,大写转小写就加32,注意要强制转成
char类型,因为加减后会变成int类型。
这两种方案都能完美实现你要的效果:输入'a'输出'A',输入'A'输出'a',还能处理非字母的情况哦!
内容的提问来源于stack exchange,提问作者Sanjay Kumar Das
相关产品推荐
相关产品推荐

