Solved

Java Page Break Every 3 Lines

Posted on 2009-07-15
15
333 Views
Last Modified: 2013-11-23
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
Comment
Question by:bschwarting
[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
  • Learn & ask questions
  • 8
  • 3
  • 2
  • +1
15 Comments
 
LVL 86

Expert Comment

by:CEHJ
ID: 24861274
Use a PrintWriter on your FileWriter and do out.println();
0
 
LVL 1

Author Comment

by:bschwarting
ID: 24861285
very new to java, can you give an example please CEHJ?
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 24861369
Hang on, what's the value of

>> session.getVariable( "Identifier" ) ;

?
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 1

Author Comment

by:bschwarting
ID: 24861384
text1
0
 
LVL 1

Author Comment

by:bschwarting
ID: 24861393
it loops through and then gets "text2", then "text3"
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 24861467
>>it loops through

What does?
0
 
LVL 5

Expert Comment

by:sno0401
ID: 24861627
How can it loop through without any sort of loop/control logic? Is there more to your code than this?
0
 
LVL 1

Author Comment

by:bschwarting
ID: 24861792
The screen scraping software calls this small piece of code each time their is something found in interactive.
0
 
LVL 1

Author Comment

by:bschwarting
ID: 24861815
Sorry, when found in identifier
0
 
LVL 5

Expert Comment

by:sno0401
ID: 24862180
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
 
LVL 3

Accepted Solution

by:
SordSord earned 500 total points
ID: 24862205
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
 
LVL 1

Author Comment

by:bschwarting
ID: 24863669
sord, this looks exactly like what i need.

when i run it, i get this error:

"method putVariable not found"
0
 
LVL 1

Author Comment

by:bschwarting
ID: 24863724
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
 
LVL 3

Assisted Solution

by:SordSord
SordSord earned 500 total points
ID: 24864097
Try setVariable( String identifier, Object value ) instead.
0
 
LVL 1

Author Closing Comment

by:bschwarting
ID: 31603839
pure genius!  i love EE!
0

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

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

Suggested Solutions

In this post we will learn how to connect and configure Android Device (Smartphone etc.) with Android Studio. After that we will run a simple Hello World Program.
In this post we will learn how to make Android Gesture Tutorial and give different functionality whenever a user Touch or Scroll android screen.
Viewers will learn one way to get user input in Java. Introduce the Scanner object: Declare the variable that stores the user input: An example prompting the user for input: Methods you need to invoke in order to properly get  user input:
This theoretical tutorial explains exceptions, reasons for exceptions, different categories of exception and exception hierarchy.
Suggested Courses

739 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question