奇怪的问题
下面的代码可以运行:就是大小写转换时,有时会出错!大小写字母的个数也会算错,是什么异常吗?import java.io.*;
class Exercise56{
public static void main(String args[]) throws IOException{
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
String text=new String(in.readLine());
int m=0,n=0;
int x=text.length();
for(int i=0;i<x;i++){
if(Character.isLowerCase(text.charAt(i)))
{m++;
text=text.replace(text.charAt(i),Character.toUpperCase(text.charAt(i)));
}
else if(Character.isUpperCase(text.charAt(i)))
{ n++;
text=text.replace(text.charAt(i),Character.toLowerCase(text.charAt(i))) ;
}
}
System.out.println(text);
System.out.println("大写:"+n+"\t"+"小写:"+m);
}
}
----------------解决方案--------------------------------------------------------
当你输入数字的时候呢
----------------解决方案--------------------------------------------------------
数字的话,直接输出数字呀
----------------解决方案--------------------------------------------------------
[CODE]import java.io.*;
public class Test{
public static void main(String args[]) throws IOException{
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
StringBuffer text=new StringBuffer(in.readLine());
int m=0,n=0;
int x=text.length();
for(int i=0;i<x;i++){
if(Character.isLowerCase(text.charAt(i))) {
m++;
text.setCharAt(i,Character.toUpperCase(text.charAt(i)));
} else if(Character.isUpperCase(text.charAt(i))) {
n++;
text.setCharAt(i,Character.toLowerCase(text.charAt(i))) ;
}
}
System.out.println(text);
System.out.println("大写:"+n+"\t"+"小写:"+m);
}
}[/CODE]
改成这个就可以了,因为你用String的replace方法会把所有一样的字母都替换,这样就会选成替换来替换去的情况
所以,建议你使用StringBuffer,它是可变的对变,不像String是不可变的对象.这样也不会产生大量的中间对象
----------------解决方案--------------------------------------------------------
建议挺好。thanks.
这里面出现的问题是异常吗?
----------------解决方案--------------------------------------------------------
里面的问题不是异常,而是程序的设计问题
----------------解决方案--------------------------------------------------------