黑马程序员技术交流社区

标题: 求教为什么明明转成了字符串,打印的时候还是字符数组 [打印本页]

作者: 潘际昌    时间: 2013-11-27 12:37
标题: 求教为什么明明转成了字符串,打印的时候还是字符数组
本帖最后由 潘际昌 于 2013-11-27 17:21 编辑
  1. </blockquote></div><div class="blockcode"><blockquote>import java.io.*;
  2. import java.util.*;
  3. public class Test8
  4. {

  5.         public static void main(String[] args) throws Exception{
  6.                 // TODO Auto-generated method stub
  7.                 BufferedReader bufr= new BufferedReader(new InputStreamReader((System.in)));
  8.                 BufferedWriter pt=new BufferedWriter(new OutputStreamWriter(System.out));
  9.                 String s=null;
  10.                 while((s=bufr.readLine())!=null)
  11.                 {
  12.                         char[] ch=s.toCharArray();
  13.                         for(int x=0;x<ch.length;x++)
  14.                         {
  15.                                 if(ch[x]>='a'&&ch[x]<='z')
  16.                                 {
  17.                                         ch[x]=Character.toUpperCase(ch[x]);
  18.                                 }
  19.                                 else if(ch[x]>='A'&&ch[x]<='Z')
  20.                                 {
  21.                                         ch[x]=Character.toLowerCase(ch[x]);
  22.                                 }
  23.                                 else
  24.                                         continue;
  25.                         }
  26.                         
  27.                         
  28.                         String s1=Arrays.toString(ch);//为什么这句话没什么用?打印的还是数组。
  29.                         pt.write(s1, 0, s1.length());
  30.                         pt.flush();
  31.                 }
  32.                 bufr.close();
  33.                 pt.close();
  34.         }

  35.         

  36. }
复制代码






作者: 王雷1    时间: 2013-11-27 12:43
本帖最后由 王雷1 于 2013-11-27 12:44 编辑

先顶下,马上回答

作者: 王雷1    时间: 2013-11-27 12:58
本帖最后由 王雷1 于 2013-11-27 13:07 编辑

import java.io.*;

import java.util.*;

public class Demo {



        public static void main(String[] args) throws Exception{

                // TODO Auto-generated method stub

                BufferedReader bufr= new BufferedReader(new InputStreamReader((System.in)));

                BufferedWriter pt=new BufferedWriter(new OutputStreamWriter(System.out));

                String s=null;

                while((s=bufr.readLine())!=null)

                {

                        char[] ch=s.toCharArray();

                        for(int x=0;x<ch.length;x++)

                        {

                                if(ch[x]>='a'&&ch[x]<='z')

                                {

                                        System.out.print(Character
                                                                                                .toLowerCase(ch[x]));//这里返回的是你判断的字符,

                                }

                                if(ch[x]>='A'&&ch[x]<='Z')

                                {

                                        System.out.print(Character
                                                                                                .toUpperCase(ch[x]));//这里返回的也是你判断的所要得到的字符

                                }

                                else

                                        continue;

                        }pt.newLine();//加个换行好看点,呵呵

              //          String s1=Arrays.toString(ch);// 这里你打印的还是数组,

              //          pt.write(s1, 0, s1.length());

                        pt.flush();

                }

                bufr.close();

                pt.close();

        }



}
作者: 王贺    时间: 2013-11-27 13:23
运行了楼主的代码,有点问题,在转换字符大小写有问题,打印的时候没有转换显示吧,
还有就是那个String s1=Arrays.toString(ch)好像就没有转换
下面改了下:
for(int x=0;x<ch.length;x++)

                 {

                         if(ch[x]>='a'&&ch[x]<='z')

                         {

                                 ch[x]=Character.toUpperCase(ch[x]);
                                 System.out.println(ch[x]);
                                 

                         }

                         else if(ch[x]>='A'&&ch[x]<='Z')//楼主在这用了两个if,
                                                                           所以运行的不正常,改了先else if
                         {

                                 ch[x]=Character.toLowerCase(ch[x]);
                                 System.out.println(ch[x]);
                         }

                         else

                                 continue;

                 }

                 //String s1=Arrays.toString(ch);//这行代码好像根本就没有转换为字符串                              
                 pt.write(ch,0,ch.length);//可以直接这么打印
作者: 潘际昌    时间: 2013-11-27 15:52
王贺 发表于 2013-11-27 13:23
运行了楼主的代码,有点问题,在转换字符大小写有问题,打印的时候没有转换显示吧,
还有就是那个String s1 ...

我自己已经解决。
作者: 何超    时间: 2013-11-27 23:10
API文档说的很清楚了 static String toString(char[] a)
          返回指定数组内容的字符串表示形式。
所以你的输出是正确的 只不过看起来是数组 实际上是字符串只不过形式是数组的形式


要看到字符串没数组模型 直接用  new String(ch)就行了




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