java 一段反转大小写的代码问题 这段代码可以编译 但是不能运行 这是怎么了? 如下↓↓↓

//ChangeUpDown.javapublicclassChangeUpDown{publicStrings="TestString";publicvoidchang... //ChangeUpDown.java
public class ChangeUpDown{
public String s = "TestString";
public void change(){
char[] c = s.toCharArray();
for (int i = 0; i<c.length ; i++){
if ( ((int)c[i]>96)&&((int)c[i]<123) ){
c[i] = (char)(c[i-32]);
}else if ( ((int)c[i]>64)&&((int)c[i]<91) ){
c[i] = (char)(c[i+32]);
}
}
for (int i = 0; i<c.length ; i++){
System.out.print(c[i]);
}
}
}
少了一段main方法 可是 加上了 一样不行 这怎么办?
//main()
public static void main(String[] args){
ChangeUpDown c = new ChangeUpDown();
c.change();
}
展开
 我来答
游戏之子站长
2013-04-25 · TA获得超过266个赞
知道答主
回答量:86
采纳率:0%
帮助的人:123万
展开全部

你好。


把这行代码

c[i] = (char)(c[i-32]);

修改为

c[i] = (char)(c[i]-32);


把这行代码

c[i] = (char)(c[i+32]);

修改为

c[i] = (char)(c[i]+32);


就可以了。完整的修改代码参考如下:


public class ChangeUpDown
{
public String s = "TestString";
public void change(){
char[] c = s.toCharArray();
for (int i = 0; i<c.length ; i++){
if ( ((int)c[i]>96)&&((int)c[i]<123) ){
c[i] = (char)(c[i]-32);
}else if ( ((int)c[i]>64)&&((int)c[i]<91) ){
c[i] = (char)(c[i]+32);
}
}
for (int i = 0; i<c.length ; i++){
System.out.print(c[i]);
}
}

public static void main( String[] args )
{
ChangeUpDown cud = new ChangeUpDown( );
System.out.println("before change:"+cud.s);
System.out.print("after change:");
cud.change( );
}
}


望采纳!

追问

我试了 还是不行啊。。

跑了 运行效果如下

追答

稍等。我试试看。我之前是在eclipse里运行的。


ok,解决方案如下:

1)确认代码和我上面给出的完全一样;

2)确认环境变量classpath里包含“.”(如图红框部分,代表在当前目录查找类)

fuhaiwei
2013-04-25 · TA获得超过3409个赞
知道大有可为答主
回答量:974
采纳率:75%
帮助的人:1390万
展开全部

我没仔细检查其他逻辑,但是这里

c[i] = (char)(c[i-32]);

是不是应该改成

c[i] = (char)(c[i]-32);


另一处也是同样道理。


不行吗,我给你完整代码。

public class ChangeUpDown {
public static void main(String[] args) {
System.out.println(change("TestString"));
}
public static String change(String source) {
char[] cs = source.toCharArray();
for (int i = 0; i < cs.length; i++) {
if (cs[i] >= 65 && cs[i] <= 90) {
cs[i] += 32;
} else if (cs[i] >= 97 && cs[i] <= 122) {
cs[i] -= 32;
}
}
return new String(cs);
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友12ee0fd
2013-04-25 · TA获得超过4.7万个赞
知道大有可为答主
回答量:1.1万
采纳率:66%
帮助的人:1974万
展开全部
使用 Character的 isUpperCase/toUpperCase/isLowerCase/toLowerCase 判断和转换。
追问
稍微具体点。
追答
public class ChangeCase {
public static void main(final String[] args){
System.out.println(changeCase("Test String"));
}
public static String changeCase(String s){
StringBuilder builder = new StringBuilder(s.length());
for(char c : s.toCharArray()){
if(Character.isUpperCase(c)) {
builder.append(Character.toLowerCase(c));
} else {
builder.append(Character.toUpperCase(c));
}
}
return builder.toString();
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
严肃的甲道士
2013-04-25 · 传播技术传播爱,笔芯❤️
严肃的甲道士
采纳数:337 获赞数:619

向TA提问 私信TA
展开全部
for (int i = 0; i < c.length; i++) {
if (((int) c[i] > 96) && ((int) c[i] < 123)) {
c[i] = (char) (c[i] - 32);
} else if (((int) c[i] > 64) && ((int) c[i] < 91)) {
c[i] = (char) (c[i] + 32);
}
}

加个main函数跑跑试试先~~~

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
摆渡的旱鸭子
2013-04-25 · TA获得超过148个赞
知道答主
回答量:177
采纳率:0%
帮助的人:88.4万
展开全部
改成这样就对了
package day0425;
import org.junit.Test;
//ChangeUpDown.java
public class ChangeUpDown{
public String s = "TestString";
@Test
public void change(){
char[] c = s.toCharArray();
for (int i = 0; i<c.length ; i++){
if ( ((int)c[i]>96)&&((int)c[i]<123) ){
c[i] = (char)(c[i]-32);
}else if ( ((int)c[i]>64)&&((int)c[i]<91) ){
c[i] = (char)(c[i]+32);
}
}
for (int i = 0; i<c.length ; i++){
System.out.print(c[i]);
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
657236296
2013-04-25 · 超过16用户采纳过TA的回答
知道答主
回答量:44
采纳率:0%
帮助的人:44.6万
展开全部
你那提示报什么错误?把错误截图出来看看!还有为什么你要自己写这个大小写的转换了,java自身就自带了大小写的转换函数的!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式