本来以为很简单的一个程序,竟然搞了二个钟头没出来预期结果.唉,菜鸟就是菜鸟.题目:将一个字符串中的小写字母变成大写字母,并将大写字母变成小写字母.我写的程序如下:
public class Charconvert {
    public static void main(String[]args){
     String s=new String("I love China!");
     int i;
    
     char ch[]=new char[s.length()];
     s.getChars(0,s.length()-1,ch,0);
    
     for(i=0;i<s.length()-1;i++){
    
     if(Character.isLowerCase(ch[i]))
     Character.toUpperCase(ch[i]);
     else
     if(Character.isUpperCase(ch[i]))
     Character.toLowerCase(ch[i]);
     }
     System.out.println(String.valueOf(ch));    }
}
原以为这个是小CASE呢,结果出来这个结果:I love China(在eclipse中输出的结果最后边还有一个小"口"这里复制不上).另外请教高人如何从键盘接收并读取一个字符串呢?

解决方案 »

  1.   

    public static String readInput() throws IOException { 
        BufferedReader br; 
        String str = ""; 
        // 从键盘读取一行输入,回车结束 
        br = new BufferedReader(new InputStreamReader(System.in)); 
        str = br.readLine(); 
        return str;   }
      

  2.   

    Character.toUpperCase(ch[i]); 

    Character.toLowerCase(ch[i]); 
    都不会改变原来的值。需要用
    ch[i]=Character.toUpperCase(ch[i]); 1.5一下的版本可以用2楼的代码输入。
    在j2se 1.5开始,就可以用下面的方式输入:
    import java.io.*;
    import java.util.*;public class Main
    {
            public static void main(String argv[])
            {
                    Scanner cin = new Scanner(System.in);
                    String s = cin.nextLine();
            }
    }
      

  3.   

    大小写这么转换也行~public static void main(String[]args){
         String test= "abc DEFg";
         char [] chars = test.toCharArray();
         for(int j=0;j<chars.length;j++){
               if(chars[j]>='A'&&chars[j]<='Z')
                 chars[j] = (char)(chars[j]+32);
              else if (chars[j]>='a'&&chars[j]<='z')
                 chars[j] = (char)(chars[j]-32);
       }
       System.out.println(chars); 
    }
      

  4.   

    TO:LZ
    首先对的结果做个解释,你用到的Character.toUpperCase(ch[i]); 
    Character.toUpperCase(ch[i]); 只是简单的返回值而不会改变原来ch[i]的值。所以是:I   love   China而后面的'!'号不出来,是因为你 s.getChars(0,s.length()-1,ch,0); 这个地方有问题,
    String.getChars()的第二的叁数是:字符串中要复制的最后一个字符之后的索引,所以,不用对.length() 减1了,至于在eclipse中输出的结果最后边还有一个小"口"这里复制不上,那是因为你前面s.length()-1后,ch数组的最后一个没有被赋值的,然而你String.valueOf(ch)并且打印之,所以I   love   China的后面不出现那个‘!’号了!而出显示你的'口'字!
    应该这样:
    public class Charconvert {
    public static void main(String[] args) {
    String s = new String("I   love   China!");
    int i;
    System.out.println(s.length());
    char ch[] = new char[s.length()];
    s.getChars(0, s.length(), ch, 0); for (i = 0; i < s.length(); i++) { if (Character.isLowerCase(ch[i])) {
    System.out.print(Character.toUpperCase(ch[i]));
    } else if (Character.isUpperCase(ch[i]))
    System.out.print(Character.toLowerCase(ch[i]));
    else if(ch[i]=='!')
    System.out.print("!");
    else
    System.out.print(" ");
    }
    System.out.println();
    System.out.println(String.valueOf(ch));
    }
    }