黑马程序员技术交流社区
标题:
关于打印字符串与子字符串的问题
[打印本页]
作者:
凡延海
时间:
2012-6-1 21:39
标题:
关于打印字符串与子字符串的问题
我自己写了一个给定一个集合求出其所有的子集
public class TestString {
public static void main(String[] args) {
String str="123";
for(int i=0;i<3;i++)
{
for(int j=3;i<=j;j--)
System.out.println(str.substring(i,j));
}
}
}
这个程序打印的结果是:
123
12
1
23
2
作者:
刘伯阳
时间:
2012-6-1 22:11
貌似少了 0 ,13 ,3
作者:
杨天皓
时间:
2012-6-1 22:16
童鞋,你的问题是什么呢?
作者:
凡延海
时间:
2012-6-1 22:36
杨天皓 发表于 2012-6-1 22:16
童鞋,你的问题是什么呢?
我的打印结果感觉不正确,想让高手改改。
作者:
王月
时间:
2012-6-2 10:16
本帖最后由 王月 于 2012-6-2 10:19 编辑
你用了substring()这个方法,所以如果字符串在三个或三个以上就不会打印出所有的子字符串。
substring(i,j)获取的是脚标 i 到 j 之间所有的元素,1、13这个子字符串用这个方法肯定不会被打印到。
作者:
朝哥
时间:
2012-6-2 12:25
我帮你读一下程序吧。
首先进入for循环外层
i=0
再进入内循环
i=0 j=3 //123
i=0 j=2 //12
i=0 j=1 //1
i=0 j=0 //注意:不会打出什么,因为substring(0,0)的意思是取大于或等于前面的0,而小于后面的0.看到没有?
substring(x,y)表示>=x或者<y.
一句话:含左不含右
你以后学习java类似的方法时差不多都可以参看这句话
作者:
张洁
时间:
2012-6-2 13:33
复制楼主代码运行了下,结果为:
123
12
1
23
2
3
楼主少个3哟
下面,记得要善于查询API文档哈。
先贴上API中的说明:
substring(int beginIndex, int endIndex)
返回一个新字符串,它是此字符串的一个子字符串。
该子字符串从指定的 beginIndex 处开始,一直到索引 endIndex - 1 处的字符。
因此,该子字符串的长度为 endIndex-beginIndex。
注意:beginIndex - 开始处的索引(包括)。endIndex - 结束处的索引(不包括)。
这里还需要注意的是,索引结束为止是endIndex - 1 而不是 endIndex。
再下面分析下程序:
这是典型滴for循环套for循环。
然后顺序就是i=0: i=0,j=3; i=0,j=2; i=0,j=1; i=0,j=0;
i=1: i=1,j=3; i=1,j=2; i=1,j=1;
i=2: i=2,j=3; i=2,j=2;
i=3: i=3,j=3;
然后就是结果啦~拿第一个举例先:i=0,j=3那么按substring(i,j)规则str输出范围为0~3-1=2。也就是第一位到第三位啦~结果:123
其他类似。
但是当i=j时:按规则有sunstring(i,j)最终长度为j-i。
所以。i=j=0; i=j=1; i=j=2; i=j=3;时字符串长度即为0,就是~木有结果~
因而一共有10次循环打印,4次木有结果,因而最终只输出的6个值:123 12 1 23 2 3
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2