java写的一段程序,输出结果全是问号,请高手指教

public class Pword {
public String asctoString(String st) {
int offset = 0;
int strlen = 0;
int i = 0;
int ch = 0;
String tem = "";
String ptext = "";
tem = st;
strlen = st.length();
byte bytes[] = st.getBytes();
for (i = 0; i < strlen; i++) {
ch = bytes[i];
if (ch >= 32 && ch <= 126) {
ch+=32;
if ((ch - 95) < 0) {
ch = ch - 95;
}
offset = (int) (96 * Math.random());
//System.out.println(offset);
int tmp;
for (tmp = 0; tmp <= 94; tmp++) {
if (tmp % 95 == ch) {
ch = tmp + offset;
ch-=32;
}
}
}
ptext += (char)ch;
}
return ptext;
}
public static void main(String[] args) {
Pword qqp=new Pword();
String ss="123456";
System.out.print(qqp.asctoString(ss));
}
}

这段代码很容易就把一个字符的ascii码搞得小于32或大于128,ascii码小于32和大于128的字符要么不能显示,要么就是不存在的字符,没办法显示,只能显示问号了。

有的程序没法显示的字符显示为黑块或方框
温馨提示:答案为网友推荐,仅供参考
第2个回答  2010-08-17
不知道你想怎么处理这个字符串,要有目的性
第17行,明显ch都成负值了,char显然乱码了。
相似回答