StringBuffer 中append的问题!编译通过,执行报错,救急!

时间:2020-12-31 19:53:37
StringBuffer sb = new StringBuffer();
String s = "123456";
for (int i = 0; i < s.length(); i++) 
{
   char c = s.charAt(i);
   if (c >= 0 && c <= 255) 
   {
sb.append(c);
   }
   else
   {……} 
}

上述代码编译通过,但是执行的时候报错如下:
 SRVE0026E: [Servlet 错误]-[java.lang.StringBuffer: method append&#40;Ljava/lang/String&#59;&#41;Ljava/lang/AbstractStringBuilder&#59; not found]:java.lang.NoSuchMethodError: java.lang.StringBuffer: method append(Ljava/lang/String;)Ljava/lang/AbstractStringBuilder; not found

我用的是JDK 1.5

8 个解决方案

#1


没任何问题,应该是其他地方的错误

#2


这个代码没错,你把原程序发上来看看

#3


贴出来的代码的确没有问题。

#4


搞错了,我重新找了一个地方做测试,发现的确不是这个问题.其实是这样的,我做了一个自动转UTF8的函数如下:
public static String toUtf8String(String s)
{

StringBuffer sb = new StringBuffer();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c >= 0 && c <= 255)
{

sb.append(c);

else 
{
byte[] b;
try {
b = String.valueOf(c).getBytes("utf-8");
} catch (Exception ex) {
System.out.println(ex); 
b = new byte[0];
}
for (int j = 0; j < b.length; j++) {
int k = b[j];
if (k < 0)
k += 256;
sb.append("%" + Integer.toHexString(k).toUpperCase());

}
}
}
return sb.toString();

}

在1.4下编译,没有问题,在1.5下编译,就提示sb.append(c)处就提示‘未处理的异常类型IOException’,编译不通过,可是添加了抛出IOException后,编译通过,但是调用这个函数,依然报错如帖子开始所言。
奇怪啊!

#5


我这里是没事,你编译的版本和执行的版本是不是不吻合阿?

#6


试过了,这段代码没问题。

#7


我这里也没事.

#8


解决了,问题出在别的地方,这段代码没关系,解决问题第一。
我用java.net.URLEncoder.encode(req.getParameter("newname"),"utf-8")转化了,没那么麻烦,避免了刚才那个问题,谢谢诸位!

#1


没任何问题,应该是其他地方的错误

#2


这个代码没错,你把原程序发上来看看

#3


贴出来的代码的确没有问题。

#4


搞错了,我重新找了一个地方做测试,发现的确不是这个问题.其实是这样的,我做了一个自动转UTF8的函数如下:
public static String toUtf8String(String s)
{

StringBuffer sb = new StringBuffer();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c >= 0 && c <= 255)
{

sb.append(c);

else 
{
byte[] b;
try {
b = String.valueOf(c).getBytes("utf-8");
} catch (Exception ex) {
System.out.println(ex); 
b = new byte[0];
}
for (int j = 0; j < b.length; j++) {
int k = b[j];
if (k < 0)
k += 256;
sb.append("%" + Integer.toHexString(k).toUpperCase());

}
}
}
return sb.toString();

}

在1.4下编译,没有问题,在1.5下编译,就提示sb.append(c)处就提示‘未处理的异常类型IOException’,编译不通过,可是添加了抛出IOException后,编译通过,但是调用这个函数,依然报错如帖子开始所言。
奇怪啊!

#5


我这里是没事,你编译的版本和执行的版本是不是不吻合阿?

#6


试过了,这段代码没问题。

#7


我这里也没事.

#8


解决了,问题出在别的地方,这段代码没关系,解决问题第一。
我用java.net.URLEncoder.encode(req.getParameter("newname"),"utf-8")转化了,没那么麻烦,避免了刚才那个问题,谢谢诸位!