Ciao a tutti forumiani ho creato un programmino per esercitarmi ma non riesco a far stampare le stringhe all'interno del secondo file... quelle all'interno del metodo generaFile vengono stampate normalmente, le altre no. 
So che il codice l'avrei potuto scrivere in molte meno righe... ma è giusto per divertimento nulla di serio 
Main
codice:
package esercizio1;
import java.io.IOException;
import java.util.NoSuchElementException;
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws IOException{
Classe file = new Classe ();
System.out.print("Nome file: ");
try {
Scanner in = new Scanner (System.in);
String nomeFile = in.next();
file.generaFile(nomeFile);
System.out.println("Stampa linee numeriche...");
file.stampaLineeNumeriche(nomeFile);
System.out.println("Stampa linee con numero...");
file.stampaLineeConNumero(nomeFile);
System.out.println("Quale lettera vuoi cercare? ");
char lettera = in.next().charAt(0);
file.stampaLineeConLetterePari(nomeFile, lettera);
char lettera1 = in.next().charAt(0);
char lettera2 = in.next().charAt(0);
System.out.println("Stampa linee con numero uguale...");
file.stampaLineeConNumeroUguale(nomeFile, lettera1, lettera2);
in.close();
}catch(NoSuchElementException ecc) {
ecc.getMessage();
}
}
}
Classe
codice:
package esercizio1;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.Scanner;
import java.util.regex.Pattern;
public class Classe {
private BufferedReader leggi;
private BufferedWriter scrivi;
private Random random = new Random();
public Classe () {
//VOID
}
public void stampaLineeConNumeroUguale (String nomeFile, char lettera1, char lettera2) throws IOException{
List<String> file = leggiFile(nomeFile);
for(String it:file)
if(controllaOccorrenzaSimultanea(it, lettera1, lettera2))
System.out.println("I caratteri: " + lettera1 + " && "+ lettera2 + " sono contenute lo stesso numero di volte nella stringa: " + it);
}
public boolean controllaOccorrenzaSimultanea(String s, char l1, char l2) {
int n1 = 0, n2 = 0;
int le1 = (int) l1;
int le2 = (int) l2;
for(int i = 0 ; i < s.length() ; i++) {
int n = (int)s.charAt(i);
if(n == le1) n1++;
else if(n == le2) n2++;
}
if(n1 == n2) return true;
return false;
}
public void stampaLineeConLetterePari (String nomeFile, char lettera) throws IOException {
List<String> file = leggiFile(nomeFile);
for(String it:file)
if(letterePari(it, lettera))
System.out.println("La lettera " + lettera + " è presente n-pari volte nella parola " + it);
}
public boolean letterePari (String s, char l) {
if(Pattern.matches("("+l+l+")+", s)) // la lettera l deve essere presente (ll)+
return true;
return false;
}
public void stampaLineeConNumero (String nomeFile) throws IOException {
List<String> file = leggiFile(nomeFile);
for(String it:file)
if(Pattern.matches("[0-9]+", it))
System.out.println("La stringa: " + it + " contiene almeno un numero.");
}
public void stampaLineeNumeriche (String nomeFile) throws IOException {
List<String> file = leggiFile(nomeFile);
for(String it:file)
if(controlla(it))
System.out.println("Numero rilevato: " + it);
}
public boolean controlla (String s) {
try {
Integer.parseInt(s);
}catch(NumberFormatException ecc) {
ecc.getMessage();
return false;
}
return true;
}
public List<String> leggiFile(String nomeFile) throws IOException{
System.out.println("Leggo il programma...");
List<String> toReturn = new ArrayList<String> ();
try {
leggi = new BufferedReader (new FileReader (nomeFile));
}catch(FileNotFoundException ecc) {
ecc.getMessage();
}
while(leggi.ready())
toReturn.add(leggi.readLine());
System.out.println("Programma letto.");
return toReturn;
}
public void generaFile (String nomeFile) throws IOException {
int numero;
String stringa;
try {
scrivi = new BufferedWriter(new FileWriter (nomeFile));
}catch(FileNotFoundException ecc) {
ecc.getMessage();
}
Scanner in = new Scanner (System.in);
for(int i = 0 ; i < 5 ; i++) {
numero = random.nextInt();
stringa = "" + numero + "\n";
scrivi.append(stringa);
System.out.print("Inserisci stringa: ");
stringa = in.next();
scrivi.append(stringa + "\n");
}
in.close();
}
}
Confido nella forza