Solved

# Ho to solve this problem using java

Posted on 2014-02-14
302 Views
Hi Experts,
I have a requirement where I need to split a string into different lines. Max line 10, each line should have 69 characters (Including space)if the  string size is less than 680 all other lines will be left blank.  If the size is more than 680 we need to start from line 1
If less than 136
Line1  1 - 68
line2   69 – 136
Line3  blank
..
line10 blank

Each of them has a width of 68 character

Scenario #2
Total Number of Length is 1200
line      1             68
line2    69           136
line3    137        204
line4    205        272
line5    273        340
line6    341        408
line7    409        476
line8    477        544
line9    545        612
line10 613        680

Start from Line1
line      681        748
line2    749        816
line3    817        884
line4    885        952
line5    953        1020
line6    1021      1088
line7    1089      1156
line8    1157      1200
line9  blanks
line10 blanks

Thanks,
A
0
Question by:AliAjoo
[X]
###### Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points
• 2
• 2

LVL 75

Expert Comment

ID: 39860487
A couple of for loops could handle this:

e.g.

``````class Splitter {
public static void main(String[] args) {
String input = "01234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890";

for (int counter = 0; counter < input.length(); counter++) {
for (int line = 1; line <= 10; line++) {
System.out.print("Line " + Integer.toString(line) + " : ");

if (counter < input.length()) {
for (int character = 0; character < 69; character++) {
System.out.print(input.charAt(counter));
counter++;

if (counter == input.length()) break;
}
}

System.out.println();
}
}
}
}
``````
0

Author Comment

ID: 39860877
Thanks Kufmed, it is ver helpful, I have to add it each line in an xml element.  How do I do that?

startElement("p_text");
String notes = getNotes();
if(null!= notes){
System.out.println("Notes Length is " +notes);
for(int counter=0; counter<=notes.length();counter++){
for (int line = 1; line <= 10; line++) {
addNode("textine" + line , text will go here inside a node );

}
}

}

endElement("p_text");

}

protected void addNode(String name, int data) throws SAXException {
}
0

LVL 32

Expert Comment

ID: 39861647
I'm not exactly sure of your requirements. If we change the single line length limitation to 4 and the total line limitation to 40 in your example (just to make it easier for testing), then a string of 13 characters, say 'abcdefghijklm' should produce the following 10 lines?:
1-4   abcd
5-8   efgh
9-12  ijkl
13-16 m
17-20 blank
21-24 blank
25-28 blank
29-32 blank
33-36 blank
37-40 blank

And a string of 50 characters, say 'abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwx',   should produce the following lines?:

1-4   abcd
5-8   efgh
9-12  ijkl
13-16 mnop
17-20 qrst
21-24 uvwx
25-28 yzab
29-32 cdef
33-36 ghij
37-40 klmn

and also the folloowing lines?:
41-44 opqr
45-48 stuv
49-52 wx
53-56 blank
57-60 blank
61-64 blank
65-68 blank
68-72 blank
73-76 blank
77-80 blank

If that's correct, then what do you want to do with them? Also, what is meant by including space? If that's not correct, can you provide a little more clarification. Perhaps some actual data and the anticipated output.
0

LVL 75

Accepted Solution

käµfm³d   👽 earned 400 total points
ID: 39861657
Instead of printing out the text, create new variables that hold the name and data, and assign the data to those variables. At the end of the character loop, call your node-adding code.

e.g.

``````class Splitter {
public static void main(String[] args) {
String input = "01234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890";

for (int counter = 0; counter < input.length(); counter++) {
for (int line = 1; line <= 10; line++) {
String name = "Line " + Integer.toString(line) + " : ";
String data = "";

if (counter < input.length()) {
for (int character = 0; character < 69; character++) {
data = data + input.charAt(counter);
counter++;

if (counter == input.length()) break;
}
}

}
}
}
}
``````
0

Author Closing Comment

ID: 39869323
this is exactly what i needed
0

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction This article is the last of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article covers our test design approach and then goes through a simple test case example, how …
International Data Corporation (IDC) prognosticates that before the current the year gets over disbursing on IT framework products to be sent in cloud environs will be \$37.1B.
Viewers learn about the “for” loop and how it works in Java. By comparing it to the while loop learned before, viewers can make the transition easily. You will learn about the formatting of the for loop as we write a program that prints even numbers…
Viewers learn about how to reduce the potential repetitiveness of coding in main by developing methods to perform specific tasks for their program. Additionally, objects are introduced for the purpose of learning how to call methods in Java. Define …
###### Suggested Courses
Course of the Month6 days, 13 hours left to enroll