黑马程序员技术交流社区

标题: 这个程序怎样修改才能实现大小写互换 [打印本页]

作者: @翱翔@    时间: 2014-1-13 22:58
标题: 这个程序怎样修改才能实现大小写互换
import java.util.Scanner;

/**
*  编写程序,从键盘接收一个字符串,对字符串中的字母进行大小写互转(大写字母转成小写,小写字母转成大写)。
* /
public class Test8 {
        public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入一个字符串:");
       
                       
                String s = sc.nextLine();
                char[] ch=s.toCharArray();
       
                for(int x=0;x<ch.length;x++){
               
                if(ch[x]>='a'&&ch[x]<='z'){
                       
                        String s1=String.valueOf(ch);
                        s1.toUpperCase();
                }
                else if(ch[x]>='A'&&ch[x]<='Z'){
                        System.out.println(ch);
                        String s2=String.valueOf(ch);
                        s2.toLowerCase();
                       
                }
               
                System.out.println(ch.toString());
                }
               
               
               
        }

}
作者: ↑↓ME→←    时间: 2014-1-13 23:03
你的字母转换后并没有覆盖原字母,判断语句中应该有对数组字母重新赋值的语句!
作者: 淡夜清风    时间: 2014-1-13 23:26
修改代码如下:
import java.util.Scanner;

public class Test8 {
    public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入一个字符串:");
           
            String s = sc.nextLine();
            char[] ch=s.toCharArray();
   
            for(int x=0;x<ch.length;x++){
            
            if(ch[x]>='a'&&ch[x]<='z'){
                    
                   ch[x]-=32;
            }
            else if(ch[x]>='A'&&ch[x]<='Z'){
                   
                     ch[x]+=32;
                    
            }
            
            }
            System.out.println("转换后的字符串:");
            for(int i=0;i<ch.length;i++)   
                System.out.print(ch[i]);
   
    }
   
}
运行结果:
请输入一个字符串:
asdHUIopd
转换后的字符串:
ASDhuiOPD
作者: @翱翔@    时间: 2014-1-13 23:35
淡夜清风 发表于 2014-1-13 23:26
修改代码如下:
import java.util.Scanner;

如果用UptoUpperCase()和toLowerCase()应该怎么做;?
作者: ↑↓ME→←    时间: 2014-1-13 23:51
可以将每个字母分别判断,然后转换
  1. private static String getChina(String str) {
  2.                 char[] chars = str.toCharArray();
  3.                 for(int i = 0;i<chars.length;i++){
  4.                         if(Character.isUpperCase(chars[i])){
  5.                                 chars[i] = Character.toLowerCase(chars[i]);//大写转换成小写
  6.                         }else if(Character.isLowerCase(chars[i])){
  7.                                 chars[i] = Character.toUpperCase(chars[i]);//小写转换成大写
  8.                         }else{
  9.                                 System.out.println("含有非字母数据,请重新输入");//如果含有非字母数据,重新输入
  10.                         }
  11.                 }
  12.                 return new String(chars).toString();//返回转换后的字符串
  13.         }
复制代码



作者: 淡夜清风    时间: 2014-1-14 00:11
@翱翔@ 发表于 2014-1-13 23:35
如果用UptoUpperCase()和toLowerCase()应该怎么做;?

public class Test8 {
    public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入一个字符串:");
           
            String s = sc.nextLine();
            char[] ch=s.toCharArray();
   
            for(int x=0;x<ch.length;x++){
            
            if(ch[x]>='a'&&ch[x]<='z'){
                    
                   ch[x] = Character.toUpperCase(ch[x]);
            }
            else if(ch[x]>='A'&&ch[x]<='Z'){
                   
                    ch[x] = Character.toLowerCase(ch[x]);
                    
            }
            
            }
            System.out.println("转换后的字符串:");
            for(int i=0;i<ch.length;i++)   
                System.out.print(ch);
   
    }
   
}
作者: 汪伟楠    时间: 2014-1-14 11:03
我写的代码如下:
  1. public class Test7 {

  2.         public static void main(String[] args) {
  3.                 // TODO Auto-generated method stub
  4.                 BufferedReader bufr=null;
  5.                 BufferedWriter bufw=null;
  6.                 try{
  7.                         System.out.println("请输入一串大写或者小写的字母:");
  8.                         //键盘录入.
  9.                          bufr=new BufferedReader(new InputStreamReader(System.in));
  10.                         //控制台输出.
  11.                          bufw=new BufferedWriter(new OutputStreamWriter(System.out));
  12.                          //读取输入流.
  13.                         String line=null;
  14.                         while((line=bufr.readLine())!=null){
  15.                                 if("over".equals(line))
  16.                                         break;
  17.                                 bufw.write(zimuChange(line));
  18.                                 bufw.newLine();
  19.                                 bufw.flush();
  20.                                 }
  21.                 }
  22.                 //对异常进行简单的处理.
  23.                 catch(IOException e){
  24.                         throw new RuntimeException();
  25.                 }
  26.                 finally{
  27.                         try{
  28.                         //关闭资源
  29.                         bufr.close();
  30.                         }
  31.                         catch(IOException e){
  32.                                 throw new RuntimeException();
  33.                         }
  34.                 }                       
  35.                 }
  36.                 //将字符串转换成字符数组,只对大小写的字母进行转换.
  37.                 public static String zimuChange(String line){
  38.                         char [] arr=line.toCharArray();
  39.                         //加入字符串缓冲区StringBuilder,对字母进行增加.
  40.                         StringBuilder sb=new StringBuilder();
  41.                         for(int x=0;x<arr.length;x++){
  42.                                 //加入判断,因为大写字母的ASCII值+32就是小写字母的ASCII值.
  43.                                 if(arr[x]>='A'&&arr[x]<='Z'){
  44.                                         arr[x]+=32;
  45.                                         sb.append(arr[x]);
  46.                                 }
  47.                                 //加入判断,因为小写字母的ASCII值-32就是大写字母的ASCII值.
  48.                                 else if(arr[x]>='a'&&arr[x]<='z'){
  49.                                         arr[x]-=32;
  50.                                         sb.append(arr[x]);
  51.                                 }
  52.                                 else{
  53.                                         //对其他的字母不进行判断.
  54.                                         sb.append(arr[x]);
  55.                                 }
  56.                                
  57.                         }
  58.                                 return sb.toString();
  59.                 }
  60.         }


复制代码





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