并使用字符限制(自动换行)我需要将这些单词分隔出来 输出:换行= 20
aa bbb cccc
ddddd eeeeee fffffff
目前我可以得到每行的单词数,但是例如如果一个单词由于换行而无法适应,我的程序将它放到另一行,但是我需要每行保持相同数量的字符串所以第一行有4个字符串,但其余的有5个,因为它们的字符串较小。
提前致谢。
答案 0 :(得分:0)
您可以通过循环遍历数组中的每个第n项来计算每列的间距。
例如,如果您知道每行的单词数,比如说每行3个单词,则可以从第一个元素开始获取每个第3个元素,以获得第一列最长的单词。
所以你有一个for循环:
int longestWord = 0;
for(int i = 0; i < arrayLength; i += wordsPerLine)
{
if(array[i].Length > longestWord)
longestWord = array[i].Length;
}
不确定你是如何为每一栏实现的,但这是一个想法?
答案 1 :(得分:0)
我能想到的唯一方法很复杂 你可以先得到对字符串进行拆分的组数,然后得到每组中的字符数。 如果有,则可以开始创建组,并在其中一个子组超出限制时停止
//creates groups and lengths arrays
string letters = aaa bbbb ccc dd eeeeeee ffffffffff gggggggggggggggg hh iiiiiiiiii;
string[] groups = letters.split(" ");
int[] lengths = new int[groups.length]
for(int i = 0; i<groups.length, i++){
lengths[i] = groups[i].length;
}
int numberofrows;
//starts doing groups: is one element is more that 20, then if 2 elements are more
//than 20, 3 elements more than 20....
// when a sum is more than 20, then the last amount of groups was the one to use
for(int i = 0, i<groups.length<i++){
for(int j = 1, j<=groups.length, j++)
int sum = add(i, j)
if(sum > limit){
numberofrows = j-1;
return;
}
}
}
//this makes the addition of several elements of the array, next to the other
public int add(int index, id sums){
int sum = lengths[index];
for(int i = 0, i<=sums;i++){
sum += lengths[index+i];
}
return sum;
}