这是我做的,觉得写得太麻烦了,有什么简单的方法吗?
- //编写程序,从键盘接收一个字符串
- //对字符串中的字母进行大小写互转(大写字母转成小写,小写字母转成大写)。
- import java.util.Scanner;
- class test8 {
- public static void main(String[] args) {
- System.out.println("字母大小写互换,请输入后回车");
- Scanner sc = new Scanner(System.in);
- String val = sc.next();
- System.out.println("转换如下");
- val = run(val);
- System.out.println(val);
- }
- //字母转换方法体
- public static String run(String str)
- {
- char[] arrMin = new char[26];//小写字母数组
- char[] arrMax = new char[26];//大写字母数组
- char min = 'A';//定义大写字母
- char max = 'a';//定义小宝字母
- String s = "";//定义方法返回值
- for (int i = 0;i < 26 ;i ++ )//字母循环写入数组
- {
- arrMin[i] = min;
- arrMax[i] = max;
- min += 1;
- max += 1;
- }
- //循环对字符串进行转换,大写转小写,小写转大写
- for (int i = 0;i < str.length() ;i ++ )
- {
- s += letter(arrMin,arrMax,str.charAt(i));
- }
- return s;
- }
- //字母大小写判断方法体
- public static char letter (char[] arrI,char[] arrA,char t)
- {
- char str;//定义返回值
- //如果在小写字母中数组中没有查找到,则查找大写字母数组
- if (binarySearch(arrI,t) != -1)
- {
- str = arrA[binarySearch(arrI,t)];
- }else if (binarySearch(arrA,t) != -1){
- str = arrI[binarySearch(arrA,t)];
- }else{
- str = t;//如果大小写字母数组中都没有,则返回原字符
- }
- return str;
- }
- //二分查找
- public static int binarySearch(char[] arr,char val)
- {
- int start = 0,end = arr.length - 1;
- int mid = (start + end) >>> 1;
- while (end >= start)
- {
- if (arr[mid] == val)
- {
- return mid;
- }
- if (arr[mid] < val)
- {
- start = mid + 1;
- mid = (start + end ) >>> 1;
- }
- if (arr[mid] > val)
- {
- end = mid - 1;
- mid = (start + end ) >>> 1;
- }
- }
- return -1;
- }
- }
复制代码
|