再来求一个JAVA字符串分割的小程序!!!!!

Cbfan 2004-05-05 03:41:03
写一个Java程序,这个程序要包含一个方法,这个方法的作用是重新排列输出一个字符串S1,这个方法还有个参数是S2。写出用Main函数调用这个方法的完整程序。

具体加工过程是:

程序读取一个文本文件s1.txt,把它放在String S1里; 用S2的大小来分割S1的内容,如果S1里面的当前单词长度小于S2,而他和下一个单词的长度加起来又大于S2,则只输出着一个单词;反之,输出这两个单词。

比如S1的内容是:"The 1 before last, just before dinner...", S2的大小是5,则程序输出:

"The 1"
"befor"
"e"
"just"
"befor"
"e"
"dinne"
"r..."



可以用String substring(int start , int end)来做。

...全文
108 14 点赞 打赏 收藏 举报
写回复
14 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Cbfan 2004-05-07
不好意思~还是要顶~~
  • 打赏
  • 举报
回复
Cbfan 2004-05-07
受人所托~~我对JAVA不熟啊。:(
  • 打赏
  • 举报
回复
BigBangBug 2004-05-06
支持 dogcai(dogcai)
只是楼主也太....

"但是S1是参数,S2是从文件S2.txt读取的,并没有体现出来啊。" 这样的要求也要别人帮你???算法都给出了,还懒得自己做出来???晕,不要帮csdn当成是用分来换作业的地方!!!
  • 打赏
  • 举报
回复
anguofeng 2004-05-06
高手啊~
这个程序要做的是什么啊~~~~~~~~~`
  • 打赏
  • 举报
回复
marvy 2004-05-06

怎么现在的人越来越懒了?!

如果连一点自己动手的想法都没有,又怎么能够做好程序员:~)
  • 打赏
  • 举报
回复
dogcai 2004-05-06
不对,是应该截成两段的。我是按照楼主的要求“用S2的大小来分割S1的内容,如果S1里面的当前单词长度小于S2,而他和下一个单词的长度加起来又大于S2,则只输出着一个单词;反之,输出这两个单词。”。。这样当然要输出两个了。。

:)我不是“(按理来说应该截成1段)”,是根据楼主的要求哦
  • 打赏
  • 举报
回复
Cbfan 2004-05-06
谢谢,但是S1是参数,S2是从文件S2.txt读取的,并没有体现出来啊。
  • 打赏
  • 举报
回复
caiyanying732 2004-05-05
学习
  • 打赏
  • 举报
回复
satangf 2004-05-05
现在把我的程序奉上,匆忙之中写的不是很好,但基本符合要求。

public class StringSource {
public StringSource() {
}

public void aa(String s, int i) {
java.util.ArrayList arr = new java.util.ArrayList();
try {
while (s.trim().length() > 0) {
int a = 0;
String b = "";
while (true) {
int n = s.indexOf(" ");
if (n == -1) {
n = s.length();
}
a = a + n;
if (a > i) {
if (b.equals("")) {
b = s.substring(0, i);
arr.add(b);
s = s.substring(i);
break;
}
else {
arr.add(b.trim());
break;
}
}
else {
b = b + s.substring(0, n) + " ";
if (s.indexOf(" ") != -1)
s = s.substring(n + 1);
else
s = s.substring(n);
a++;
}
}
}
for (int m = 0; m < arr.size(); m++) {
System.out.println(arr.get(m).toString());
}
}
catch (Exception e) {
}
}

public static void main(String[] args) {
StringSource strs = new StringSource();
String info = "a b c The 1 before last, just before dinner...";
strs.aa(info, 5);
}
}
  • 打赏
  • 举报
回复
satangf 2004-05-05
楼上的程序不严密,只考虑了最多2个单词的情况,如果把你的
String s1 = "The 1 before last, just before dinner...";
换成
String s1 = "a b c The 1 before last, just before dinner...";
就不行了,前面的"a b c"被截成了2段(按理来说应该截成1段)
  • 打赏
  • 举报
回复
dogcai 2004-05-05
至于完整的程序:
public class Hello {
public static void divide(String s1,int s2) {
......//这里用刚才的算法,只是不用在定义s1和s2
}

public static void main(String args[]) {
divide(".....",5);
}
}
  • 打赏
  • 举报
回复
dogcai 2004-05-05
至于文件读写,相信楼主应该会了吧。。
运行的结果
The 1
befor
e
last,
just
befor
e
dinne
r...
Press any key to continue...
  • 打赏
  • 举报
回复
dogcai 2004-05-05
String s1 = "The 1 before last, just before dinner...";
String str;
int s2 = 5;
int i,j;
s1 += " "; // 这一步不能丢
while(s1.indexOf(' ')!=-1) {
i = s1.indexOf(' ');
if(s2 <= i) {
System.out.println(s1.substring(0,5).trim());
s1 = s1.substring(5,s1.length());
}else {
str = s1.substring(i+1,s1.length());
j = str.indexOf(' ');
if((i+j+1)>s2) {
System.out.println(s1.substring(0,i).trim());
s1 = s1.substring(i+1,s1.length());
}else {
System.out.println(s1.substring(0,i+j+1).trim());
s1 = s1.substring(i+j+2,s1.length());
}
}
}
  • 打赏
  • 举报
回复
上海小旋風 2004-05-05
不会,学习,等待......
  • 打赏
  • 举报
回复
相关推荐
发帖
Java SE
加入

6.2w+

社区成员

Java 2 Standard Edition
申请成为版主
帖子事件
创建了帖子
2004-05-05 03:41
社区公告
暂无公告