Salve!!
Ho creato un programma che leggere delle stringhe ordinate su di un file e le compara ognuna con le successive in modo tale da eliminare i doppioni....
Il programma funziona benissimo però quando arriva che leggo la stringa che non ha più stringhe dopo il programma non mi va bene e non mi esegue la parte di codice di chiusura. Ho creato anche una variabile tmp, ma nulla di fatto.
Vorrei sapere inoltre come poter realizzare per questo programma un installer e un eseguibile che mi avvi l'applicazione senza dover scrivere nulla nel terminale o ricorrere all'IDE.codice:/* elimina le stringhe doppie da un file di stringhe ordinate*/ package matteo.fileoperation; import java.io.BufferedWriter; import java.io.BufferedReader; import java.io.IOException; import java.nio.charset.Charset; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.Scanner; public class mercurio{ /* proprietà della classe */ private Path src; private Path dst; /* costruttore della classe */ public mercurio(String source,String destination){ this.src = Paths.get(source); this.dst = Paths.get(destination); } /* unico metodo pubblici*/ public void clean() { //scelta del set di caratteri da utilizzare Charset charset = Charset.forName("ISO-8859-1"); // stringhe da comparare; solo first viene strascritta String first=""; String second=""; try{ //lettore bufferizzato del sorgente BufferedReader reader = Files.newBufferedReader(this.src, charset); //scrittore bufferizzato del sorgente BufferedWriter writer = Files.newBufferedWriter(this.dst, charset); // null flag Boolean empty = false; //compare flag int equ = 0; if((first = reader.readLine()) == null) { empty = true; } if(empty == false) { if((second = reader.readLine()) == null) { empty = true; } } while(empty == false) { equ = first.compareToIgnoreCase(second); if(equ==0) { if((second = reader.readLine()) == null) { empty = true; } } else { writer.append(first, 0, first.length()); writer.newLine(); first = second; String tmp = ""; if((tmp = reader.readLine()) == null) { writer.append(first, 0, first.length()); writer.newLine(); System.out.println("\n\npatatracchete\n\n"); empty = true; } else { second = tmp; } } } writer.flush(); } catch (IOException x) { System.err.format("IOException: %s%n", x); } } public static void main(String[] v) { String source; String destination; Scanner scan = new Scanner(System.in); System.out.println("<--- apertura \'Double cleaner\' in corso... --->\n\n"); System.out.println("inserire l'indirizzo del sorgente:"); source = scan.nextLine(); System.out.println("\n\n inserire l'indirizzo della destinazione:"); destination = scan.nextLine(); mercurio Planet = new mercurio(source,destination); System.out.println("\n\n lavori in corso...\n\n"); Planet.clean(); System.out.println(" termine lavori\n\n" + " <--- chiusura \'double cleaner\' in corso...--->"); }}
Grazie!!!

Rispondi quotando