我需要限制输出字符串的长度而不格式化输入字符串本身。我想计算读取到任意限制的字符串的每个字符 - 让我们说20 - 这时它将开始在新行上打印。但是,我还需要单词来保持整个没有连字符或任何东西,所以我想,一旦我达到计算每个字符的点,我可以引入一个逻辑语句,以便它不会开始一个新的行,直到它到达20限制后的空间。
这可能吗?
在下面的The Badge的帮助下,这就是我现在所处的位置:
代码:
responder.printWelcome();
while(!finished) {
HashSet<String> input = reader.getInput();
if(input.contains("bye")) {
finished = true;
}
else {
String response = responder.generateResponse(input);
Scanner scan = new Scanner (response);
int count = 0;
scan.useDelimiter("");
StringBuilder sb = new StringBuilder();
while (scan.hasNext()){
if (count <20){
sb.append(scan.next());
count = count + 1;
}
else{
System.out.println(sb);
sb.delete(0, 20);
count = 0;
}
}
}
}
responder.printGoodbye();
}
编辑:修正了输出问题,因为它没有打印整个句子(虽然它还没有打印出句子的结尾 - &#39;配置。&#39;只出现在&#39; ; configurati&#39)
任何人都可以帮我格式化它,以便在它到达空间之前不会打印新行吗?
EDIT2:感谢Anuswadh,我感觉越来越近了!虽然新问题是它似乎正在丢失字符。
当我输入此文字时:
我于1874年11月30日出生于斯宾塞家族的一个分支马尔堡公爵家族 - 你可能知道我的远房亲戚戴安娜斯宾塞。
返回此文字:
我出生于1874年11月30日,出生于马尔堡公爵家族,这是斯宾塞家族的一个人 - 你可能知道我的远房亲戚迪娜。
答案 0 :(得分:0)
您可以构造一个Scanner对象,并将其传递给String。
Scanner scan = new Scanner (string_name);
然后构建一个循环,根据您的条件读取字符 例如
int count = 0;
scan.useDelimiter("");
StringBuilder sb = new StringBuilder();
while (scan.hasNext()){
if (count <20){
sb.append(scan.next());
}else{
//do what ever you want
}
答案 1 :(得分:0)
你可以看到下一个字符是否是一个空白区域并迭代,直到你达到它为止。
responder.printWelcome();
while(!finished) {
HashSet<String> input = reader.getInput();
if(input.contains("bye")) {
finished = true;
}
else {
String response = responder.generateResponse(input);
Scanner scan = new Scanner (response);
int count = 0;
scan.useDelimiter("");
StringBuilder sb = new StringBuilder();
while (scan.hasNext()){
if (count <20){
sb.append(scan.next());
count = count + 1;
}
else{
String c = scan.next();
if (!(c.equals(" "))) {
if (sb.charAt(sb.length() - 1) != ' ') {
while (!(c.equals(" "))) {
if (!scan.hasNext()) {
break;
}
c = scan.next();
sb.append(c);
}
}
}
System.out.println(sb);
sb = new StringBuilder();
count = 0;
}
}
}
}
responder.printGoodbye();
}