黑马程序员技术交流社区

标题: 那个面试题大小写转换的,居然被难住了,来看看哪错了 [打印本页]

作者: Yov正    时间: 2014-5-11 18:16
标题: 那个面试题大小写转换的,居然被难住了,来看看哪错了
本帖最后由 Yov正 于 2014-5-12 19:46 编辑

  1. import java.util.Scanner;

  2. /**
  3. * 输入字符串大小写转换
  4. *
  5. */
  6. class Test {
  7.         public static void main(String[] args) throws Exception {

  8.                 Scanner cin = new Scanner(System.in);
  9.                 System.out.println("请输入字符串");
  10.                 String line = cin.next();
  11.                 System.out.println("转化大小写后 " + shiftCase(line));
  12.         }

  13.         private static String shiftCase(String line) {
  14.                 // TODO 自动生成的方法存根
  15.                 String shift = null;
  16.                 char[] chars = line.toCharArray();
  17.                 for (int i = 0; i < chars.length; i++) {
  18.                         if (chars[i] > 'a' || chars[i] < 'z') {
  19.                                 chars[i] -= 32;
  20.                         } else if (chars[i] > 'A' || chars[i] < 'Z') {
  21.                                 chars[i] += 32;
  22.                         }
  23.                 }
  24.                 shift=new String(chars);

  25.                 return shift;
  26.         }
  27. }
复制代码

作者: Yov正    时间: 2014-5-11 18:18
小写转大写没事,大写转小写就是乱码啊{:3_55:}明明一个是加一个是减的
作者: 月光海    时间: 2014-5-11 19:00
代码不严谨,第一,chars要大于等于a才行,你的代码是只转换b-y,其他处一样,
其次,判断 条件里面的关系是and不是或,你的意思就是只要是比a大就都是小写了?看我代码
  1. package day1;

  2. import java.util.Scanner;

  3. /**
  4. * 输入字符串大小写转换
  5. *
  6. */
  7. class Test {
  8.         public static void main(String[] args) throws Exception {

  9.                 Scanner cin = new Scanner(System.in);
  10.                 System.out.println("请输入字符串");
  11.                 String line = cin.next();
  12.                 System.out.println("转化大小写后 " + shiftCase(line));
  13.         }

  14.         private static String shiftCase(String line) {
  15.                 // TODO 自动生成的方法存根
  16.                 String shift = null;
  17.                 char[] chars = line.toCharArray();
  18.                 for (int i = 0; i < chars.length; i++) {
  19.                         if (chars[i] >= 'a' && chars[i] <= 'z') {
  20.                                 chars[i] -= 32;
  21.                         } else if (chars[i] >= 'A' && chars[i] <= 'Z') {
  22.                                 chars[i] += 32;
  23.                         }
  24.                 }
  25.                 shift=new String(chars);

  26.                 return shift;
  27.         }
  28. }
复制代码

作者: Yov正    时间: 2014-5-12 19:45
月光海 发表于 2014-5-11 19:00
代码不严谨,第一,chars要大于等于a才行,你的代码是只转换b-y,其他处一样,
其次,判断 条件里面的关系 ...

:handshake专业,后来我也发现是或了,等号还是没发现




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2