本来以为很简单的一个程序,竟然搞了二个钟头没出来预期结果.唉,菜鸟就是菜鸟.题目:将一个字符串中的小写字母变成大写字母,并将大写字母变成小写字母.我写的程序如下:
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中输出的结果最后边还有一个小"口"这里复制不上).另外请教高人如何从键盘接收并读取一个字符串呢?
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中输出的结果最后边还有一个小"口"这里复制不上).另外请教高人如何从键盘接收并读取一个字符串呢?
解决方案 »
- [Microsoft][SQLServer 2000 Driver for JDBC]Column index 6 is out of range.这是什么原因
- Java初学者的求教!!
- 请问一下,编写java有那些编译器呀??
- 没有可用分了,大家帮帮忙。。。WEB.XML问题,
- 关于struts-config.xml
- 请问ascii字符与int怎么转换?
- 请帮我看下这个列子,点击按钮开新窗口
- 最快求一算法!
- 能不能用java将下面这段程序写一下~
- 一个初级,但可能困扰够很多人的问题
- JBuilder2007在哪里创建applet程序?
- 申请[Java -> J2SE / 基础类]的版主,知道我的请举手!
BufferedReader br;
String str = "";
// 从键盘读取一行输入,回车结束
br = new BufferedReader(new InputStreamReader(System.in));
str = br.readLine();
return str; }
和
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();
}
}
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);
}
首先对的结果做个解释,你用到的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));
}
}