再来求一个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)来做。

...全文
138 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
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
  • 打赏
  • 举报
回复
不会,学习,等待......

62,634

社区成员

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

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