Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 341
  • Last Modified:

Java Page Break Every 3 Lines

Right now I am doing some screen scraping of a site.  I want to be able to format the data properly in the txt file, but can't seem to get it to work.  The end result that I want is this:

text1, text2, text3
text4, text5, text6

So 3 items would be printed out, the 1st two with a comma after each, then the last one with no comma and go to the next line.

Right now my code below produces this:

text1, text2, text3, text4, text5, text6,

Any thoughts or suggestions would be appreciated!
// Output a message to the log so we know that we'll be writing the text out to a file.
session.log( "Writing data to a file." );
 
// Create a FileWriter object that we'll use to write out the text.
out = new FileWriter( "form_submitted_text.txt", true );
 
// Write out the text.
out.write( session.getVariable( "Identifier" ) );
out.write (", ");
 
// Close the file.
out.close();

Open in new window

0
bschwarting
Asked:
bschwarting
  • 8
  • 3
  • 2
  • +1
2 Solutions
 
CEHJCommented:
Use a PrintWriter on your FileWriter and do out.println();
0
 
bschwartingAuthor Commented:
very new to java, can you give an example please CEHJ?
0
 
CEHJCommented:
Hang on, what's the value of

>> session.getVariable( "Identifier" ) ;

?
0
Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

 
bschwartingAuthor Commented:
text1
0
 
bschwartingAuthor Commented:
it loops through and then gets "text2", then "text3"
0
 
CEHJCommented:
>>it loops through

What does?
0
 
sno0401Commented:
How can it loop through without any sort of loop/control logic? Is there more to your code than this?
0
 
bschwartingAuthor Commented:
The screen scraping software calls this small piece of code each time their is something found in interactive.
0
 
bschwartingAuthor Commented:
Sorry, when found in identifier
0
 
sno0401Commented:
Not having the screen scraping software it is difficult to give an absolute answer but here is something i've written up to give you an idea of a way to go about it.
By dividing by 3 and getting the remainder, you are able to decide which way to print the word, whether it is followd by a comma or followed by no comma but a new line instead.
Hope this helps.
public class Lister {
 
	public static void main(String[] args) {
		String[] words = {"text1", "text2", "text3", "text4", "text5", "text6"};
        int size = words.length;
 
        for (int x = 0; size > x; x++)
        {
            String currentWord = words[x];
 
            int y = x % 3;
            if (y == 0 || y == 1) {
                System.out.print(currentWord +", ");
            } else {
                System.out.println(currentWord);
            }
        }
    }
}

Open in new window

0
 
SordSordCommented:
You can add another variable to the session object to keep track of the times your function has been called.

Also, depending on how the rest of your code is structured, there may be much easier ways of doing the same thing.
session.log( "Writing data to a file." );
out = new FileWriter( "form_submitted_text.txt", true );
out.write( session.getVariable( "Identifier" ) );
 
// get or create WriteCount
Integer writecount = session.getVariable("WriteCount");
if (writecount == null) {
  writecount = new Integer(0);
}
 
// increment WriteCount
writecount = new Integer(writecount.intValue()+1);
session.putVariable("WriteCount", writecount);
 
// determine if line break or comma is needed
if (writecount.intValue()%3 == 0) {
  new PrintWriter(out).println();
} else {
  out.write (", ");
}
 
out.close();

Open in new window

0
 
bschwartingAuthor Commented:
sord, this looks exactly like what i need.

when i run it, i get this error:

"method putVariable not found"
0
 
bschwartingAuthor Commented:
The error message was: Error in method invocation: Method putVariable( java.lang.String, java.lang.Integer ) not found in class'com.screenscraper.scraper.ScrapingSession' : at Line: 13.
0
 
SordSordCommented:
Try setVariable( String identifier, Object value ) instead.
0
 
bschwartingAuthor Commented:
pure genius!  i love EE!
0

Featured Post

New feature and membership benefit!

New feature! Upgrade and increase expert visibility of your issues with Priority Questions.

  • 8
  • 3
  • 2
  • +1
Tackle projects and never again get stuck behind a technical roadblock.
Join Now