这段程序运行为什么是这个结果?

dave080 2009-04-07 07:22:28


package org.me.mylib;

public class LibClass {
public static String acrostic(String[] args) {
StringBuffer b = new StringBuffer();
for (int i = 0; i < args.length; i++) {
if (args[i].length() > i) {
b.append(args[i].charAt(i));
} else {
b.append('?');
}
}
return b.toString();
}
}







package acrostic;

import org.me.mylib.LibClass;

public class Main {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
String result = LibClass.acrostic(args);
System.out.println("Result =" + result);
}

}



运行结果为: Result =Hello

我只提供了一个参数:However we all feel zealous
为什么结果是 Hello 呢?
...全文
60 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hbgzg3006 2009-04-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 axman 的回复:]
However weallfeelzealous
[/Quote]
就是这样 因为你是args[i].charAt(i)
yuyeyi 2009-04-07
  • 打赏
  • 举报
回复
你输入了五个args
明显的if (args[i].length() > i) {
b.append(args[i].charAt(i));
根据for循环第一次i为1所以charAt的h
i=1时 charAt是e即we的第二个字母
i=2时 charAt是l即all的第三个字母
i=3时 charAt是l即feel的第四个字母
i=4时 charAt是o即zealous的第四个字母
所以是hello
yuyeyi 2009-04-07
  • 打赏
  • 举报
回复
你输入了五个args
明显的if (args[i].length() > i) {
b.append(args[i].charAt(i));
根据for循环第一次i为1所以charAt的h
i=1时 charAt是e即we的第二个字母
i=2时 charAt是l即all的第三个字母
i=3时 charAt是l即feel的第四个字母
i=4时 charAt是o即zealous的第四个字母
所以是hello
axman 2009-04-07
  • 打赏
  • 举报
回复
However we all feel zealous
dreamhunter_lan 2009-04-07
  • 打赏
  • 举报
回复
"However we all feel zealous"这个东西只算是一个参数吗?
这个就是一个长度为5的String数组了

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧