本人写的一个大小写转换的程序但是在main中出错的!我知道是我的大小写的方法
没有用好!我不知道该怎么写哦!我在s.toUpperCase()的括号中加入的s.charAt(i);
但是出错。请指教!
package untitled3;
import java.io.*;
public class li{
  public static void main(String arg[]){
    String s=" ";
    StringBuffer k=new StringBuffer();
    int i=0;
    System.out.println("please input string:");
    try{
      BufferedReader in =new BufferedReader(new  InputStreamReader(System.in));
      s=in.readLine();
      }catch(IOException e){}
     for(i=0;i<s.length();i++);
     if(s.charAt(i)>97&&s.charAt(i)<122)
       s.toUpperCase();  
     else 
     if(s.charAt(i)>65&&s.charAt(i)<90)
       s.toLowerCase();
       k.append(s.charAt(i));
       System.out.println("new String is:"+k.toString());
  }
}

解决方案 »

  1.   

    for(i=0;i<s.length();i++);//你的分号加在这里不就错了吗??这样肯定会数据越界的拉.还有那么多的if和else语句都没有加{},这样很不好的.其实大小写转换只要一条语句就行了的:
    s.toLowerCase();//将整个字符串变为小写
    s.toUpperCase();//将整个字符串变为大写
      

  2.   

    我在s.toUpperCase()的括号中加入的s.charAt(i);但是出错。这里当然会出错,因为string类里面没有toUpperCase(char a)这样一个方法。
      

  3.   

    把用 charAt() 取出的 char 数据转换成为 String 类型,再用 toUpperCase()、toLowerCase() 转缓大小写。把转换后的字符的 String 类型数据拼接起来,就可以达到你程序的目的了。
      

  4.   

    for(i=0;i<s.length();i++)
    {
         if(s.charAt(i)>97&&s.charAt(i)<122)
           s.charAt(i).toString().toUpperCase();  
         else 
         if(s.charAt(i)>65&&s.charAt(i)<90)
           s.charAt(i).toString().toLowerCase();
           k.append(s.charAt(i));
    }       System.out.println("new String is:"+k.toString());
      

  5.   


    import java.io.*;public class li {
       public static void main(String arg[]) {
          String s = " ";
          StringBuffer k = new StringBuffer();
          System.out.println("please input string:");
          try {
             BufferedReader in = new BufferedReader(new InputStreamReader(
                   System.in));
             s = in.readLine();
          } catch (IOException e) {
          }
          for (int i = 0; i < s.length(); i++) {
             char ch = s.charAt(i);
             if (ch >= 'a' && ch <= 'z')
                k.append(Character.toUpperCase(ch));
             else if (ch >= 'A' && ch <= 'Z')
                k.append(Character.toLowerCase(ch));      }
          System.out.println("new String is:" + k.toString());
       }
    }
      

  6.   


    import java.io.*;public class li {
    public static void main(String arg[]) {
    String s = "AAAbbbCCC45";
    StringBuffer k = new StringBuffer();
    for (int i = 0; i < s.length(); i++) {
    char ch = s.charAt(i);
    if (Character.isLowerCase(ch))
    k.append(Character.toUpperCase(ch));
    else if (Character.isUpperCase(ch))
    k.append(Character.toLowerCase(ch));
    else
    k.append(ch);
    }
    System.out.println("new String is:" + k.toString());
    }
    }
      

  7.   

    楼主的程序之所以出错,是因为编程习惯不好,你看你的for语句后就有个分号,后面的if,else等语句块也没有用花括号定义清楚,出错是必然的.应该是string的指针越界一类的错吧,等你for完以后 i已经大于S.length()了,怎么charAt()
       而且程序达不到目的,因为 toUpperCase会把整个字符串都统统转化啦.
      
       这方面正如
    holy_phoenix(神保佑 祂的儿女)   说的:
      把用 charAt() 取出的 char 数据转换成为 String 类型,再用 toUpperCase()、toLowerCase() 转缓大小写。把转换后的字符的 String 类型数据拼接起来,就可以达到你程序的目的了。
    就是你要一个字符一个字符的判断,转化,然后再用apend()方法组成一个新字符串.
      

  8.   

    char要转化为小写或者大写,不用先转换为String,包装类Character就提供静态方法toUpperCase、toLowerCase来转换char为大小写。判断大小写,最好用Character的静态方法isLowerCase、isUpperCase
      

  9.   

    关于大小写转换的问题.我不想多说什么.我只想在楼主这段代码中的几个编程规范问题发表下意见:
        1.在这个类中应该单独把字符转换的功能写成一个函数,而在主函数中只需要简单的输入输出和调用这个类,哪怕只是简单练练手的程序,养成这个习惯对将来很有帮助!
        2.为键盘输入单独写个类!强烈要求!程序员在编写后台程序的时候时常要用到键盘输入来进行调试,而JAVA并没有提供封装的输入类,而是把这个自由还给了我们.实在不行可以去网络上下个,SavitchIn就是不错的输入类!
        3.这种幼稚的问题实在没有必要拿出来讨论了吧,纯粹是混分!