need help with this code!
Author |
Message |
shookones
|
Posted: Sun Nov 20, 2005 1:01 pm Post subject: need help with this code! |
|
|
ok this is the code i am trying to write
a multi-class application that reads in and processes a text file. Here's what the application should do. At a prompt from the program, the user should supply the name of a text file using a Scanner object. Your program should then read in the contents of this file, and then write the file out, backwards, to a file with the name backwards.txt. For example, if the file you read in looks like this:
hello there
Dana
old pal!
Then backwards.txt, after processing, should look like this:
old pal!
Dana
hello there
this is what i have so far. but dont know what to do next. please help
import java.util.Scanner;
import java.io.*;
public class ReverseDriver {
public static void main(String[] args){
String fileName;
Scanner name = new Scanner(System.in);
System.out.println("Enter a file name");
fileName = name.nextLine();
Reversal a = new Reversal(fileName);
a.readLines();
PrintWriter writer = new PrintWriter("backwards.txt");
writer.println();
}
}
import java.io.IOException;
import java.util.ArrayList;
public class Reversal extends Echo {
public void processLine(String line) {
}
} |
|
|
|
|
|
Sponsor Sponsor
|
|
|
shookones
|
Posted: Sun Nov 20, 2005 1:04 pm Post subject: (No subject) |
|
|
im not sure what to make the processLine method do and im not sure how the PrintWriter works, like what code to write for it to write. someone please point me in the right direction. it would greatly be appreciated |
|
|
|
|
|
shookones
|
Posted: Sun Nov 20, 2005 7:55 pm Post subject: (No subject) |
|
|
anyone? |
|
|
|
|
|
wtd
|
Posted: Sun Nov 20, 2005 7:58 pm Post subject: (No subject) |
|
|
Please use code or syntax tags. |
|
|
|
|
|
shookones
|
Posted: Sun Nov 20, 2005 8:59 pm Post subject: (No subject) |
|
|
code: | import java.util.Scanner;
import java.io.*;
public class Echo{
String fileName; // external file name
Scanner scan; // Scanner object for reading from external file
public Echo(String f) throws IOException
{
fileName = f;
scan = new Scanner(new FileReader(fileName));
}
// reads lines, hands each to processLine
public void readLines(){
while(scan.hasNext()){
processLine(scan.nextLine());
}
scan.close();
}
// does the real processing work
public void processLine(String line){
System.out.println(line);
}
} |
code: | import java.io.IOException;
import java.util.ArrayList;
public class Reversal extends Echo {
String[] lines = new String[100];
public Reversal(String f) throws IOException {
super(f);
}
public void processLine(String line) {
int i = 0;
while(i < 99) {
lines[i] = line;
}
for (int j = 99; j > lines.length - 1; j--) {
System.out.println(lines[j]);
}
}
} |
code: | import java.util.Scanner;
import java.io.*;
public class ReverseDriver {
public static void main(String[] args){
String fileName;
Scanner name = new Scanner(System.in);
System.out.println("Enter a file name");
fileName = name.nextLine();
Reversal a = new Reversal(fileName);
PrintWriter writer = new PrintWriter("backwards.txt");
System.out.println(a.readLines());
writer.close();
}
}
|
|
|
|
|
|
|
wtd
|
Posted: Sun Nov 20, 2005 9:07 pm Post subject: (No subject) |
|
|
Ok... let's analyze the problem first.
You need to get a filename from the user. That's reasonably simple.
You need to read in that file and output it, and you ned to do the same, but in reverse.
Well, in order to output it reverse you're going to need to have all of the lines before you can begin doing any output. This means you have to store the lines from the file in something like:
|
|
|
|
|
|
shookones
|
Posted: Sun Nov 20, 2005 10:55 pm Post subject: (No subject) |
|
|
yea store it in an array right?
this is what i did below, is it correct?
code: | import java.io.IOException;
import java.util.ArrayList;
public class Reversal extends Echo {
String[] lines = new String[100];
public Reversal(String f) throws IOException {
super(f);
}
public void processLine(String line) {
int i = 0;
while(i < 99) {
lines[i] = line;
}
for (int j = 99; j > lines.length - 1; j--) {
System.out.println(lines[j]);
}
}
} |
|
|
|
|
|
|
wtd
|
Posted: Sun Nov 20, 2005 11:01 pm Post subject: (No subject) |
|
|
Java: | int i = 0;
while(i < 99) {
lines[i] = line;
} |
Well, here you have an infinite loop. |
|
|
|
|
|
Sponsor Sponsor
|
|
|
DanShadow
|
Posted: Tue Nov 22, 2005 2:06 pm Post subject: (No subject) |
|
|
Pretty simple program actually, ill quickly explain how it would work (you can do the programming though).
[1] Declare all variables, declare main void, et cetera
[2] Create a 2D array (or 2 arrays if you dont know how to use 2D
arrays.
[3] Read the information, store it in the first array
[4] Do a for loop, but make it go backwards, then do this:
code: |
//assuming the array is 3 lines long
String[][] text=new String[2][3];
int numAt=0;
//readlines, store them in text[0][1..3]
for (int i=3;i>-1;i--) {
text[1][numAt]=text[0][i];
numAt++;
}
|
I dont have an IDE on this computer, but what it should do is go through
text[0][1..3]
backwards, and store it in
text[1][1..3]
the numAt tracks where in text[1][1..3] the text from text[0][1..3] will be stored.
If you cant use 2D arrays, try this instead:
String[] text0,text1;
text0=new String[3];
text1=new String[3];
text1[numAt]=text0[i]
Anyways, I hope that helps you. |
|
|
|
|
|
|
|