java字符串中字符大小写的转换

im110 2008-01-19 04:47:07
本来以为很简单的一个程序,竟然搞了二个钟头没出来预期结果.唉,菜鸟就是菜鸟.



题目:将一个字符串中的小写字母变成大写字母,并将大写字母变成小写字母.我写的程序如下:
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中输出的结果最后边还有一个小"口"这里复制不上).

另外请教高人如何从键盘接收并读取一个字符串呢?
...全文
2269 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
im110 2008-01-22
  • 打赏
  • 举报
回复
谢谢各们大侠!!!
lanicetomas 2008-01-20
  • 打赏
  • 举报
回复
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));
}
}
ps1981sophia 2008-01-20
  • 打赏
  • 举报
回复
大小写这么转换也行~

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);
}
redraiment 2008-01-19
  • 打赏
  • 举报
回复
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();
}
}
老紫竹 2008-01-19
  • 打赏
  • 举报
回复
public static String readInput() throws IOException {
BufferedReader br;
String str = "";
// 从键盘读取一行输入,回车结束
br = new BufferedReader(new InputStreamReader(System.in));
str = br.readLine();
return str;

}

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧