avevo già in mente di buttare il mio e rifare il prog da capo
ho preso la strada sbagliata (vedi risultato qui sotto :rollo: )
meglio farlo più suddiviso come hai detto tu (Andrea 1979) così posso manipolarlo moooolto meglio
OK grazie mille
PS: mi vergogno pure a far vedere il progetto semi finito(funzionante), però eccovelo lo stesso (non so seo :maLOL: )
codice:import java.io.*; public class Cluster { public static void main(String args[]) { try{ // preparo i file cluster e output FileReader inputcluster = new FileReader("cluster.txt"); BufferedReader cluster = new BufferedReader(inputcluster); FileWriter fileOutput = new FileWriter("output.txt"); PrintWriter output = new PrintWriter(fileOutput); //cicla tra i vari punti(cluster) for(int count2 = 0; count2 < 1000; count2++){ //apre il flusso ad ogni punto per evitare il difetto di continuazione FileReader inputcerchi = new FileReader("cerchi.txt"); BufferedReader cerchi = new BufferedReader(inputcerchi); //dichiaro il minimo e la stringa per trovare il cerchio con //centro più vicino al punto double rMinimo = 100; String rMinimoS = ""; // lettura della riga da cluster.txt String cPunto = cluster.readLine(); //se la riga è piena (non è nulla) if(cPunto != null){ //taglia la stringa in 2(le coordinate) String[] coordinataP = cPunto.split("\\s"); //converto in double le due substringhe e trovo le coordinate double xPunto = Double.parseDouble(coordinataP[0]); double yPunto = Double.parseDouble(coordinataP[1]); //preparo l'output del cluster output.println("Cluster (" + xPunto + " " + yPunto + "): "); //output in console System.out.println("Cluster (" + xPunto + " " + yPunto + "):"); //cicla tra i vari cerchi for(int count = 0; count < 1000; count++){ //lettura della riga da cerchi.txt String cCerchio = cerchi.readLine(); // se la riga è piena (non è nulla) if(cCerchio != null){ //taglia la stringa in 3 subStringhe String[] coordinataC = cCerchio.split("\\s"); // conversione in double delle coordinate e del raggio double xCerchio = Double.parseDouble(coordinataC[0]); double yCerchio = Double.parseDouble(coordinataC[1]); double rCerchio = Double.parseDouble(coordinataC[2]); // verifica se il cerchio contiene il punto // calcolando la distanza tra il centro del cerchio e il punto //richiamando il metodo pitagora double distanza = pitagora(xPunto, yPunto, xCerchio, yCerchio); //se la distanza è minore del raggio //cioè se il punto è contenuto if (distanza <= rCerchio){ //stampa le coordinate del cerchio output.println(xCerchio + " , " + yCerchio + " raggio: " + rCerchio); //calcolo per trovare il cerchio con il centro più vicino al punto if (rCerchio <= rMinimo){ rMinimo = rCerchio; rMinimoS = (xCerchio + " " + yCerchio); } } } //se la riga è nulla, incrementa il count di 2000 //per interrompere il ciclo else count += 2000; } //stampa linea vuota per ordinare l'output output.println(""); //stampa il cerchio con il centro più vicino al punto System.out.println(rMinimoS + " : " + rMinimo + "\n"); } //se la riga è nulla, incrementa il count2 di 2000 //per interrompere il ciclo else count2 += 2000; //chiusura del file cerchi.txt cerchi.close(); } //chiusura dei file output e cluster.txt output.close(); cluster.close(); }//gestore delle eccezioni catch (IOException e){ System.out.println("Errore: " + e);} } //metodo pitagora che calcola la distanza tra due punti public static double pitagora(double xPunto, double yPunto, double xCerchio, double yCerchio) { return (Math.sqrt(((xPunto - xCerchio) * (xPunto - xCerchio)) + ((yPunto - yCerchio) * (yPunto - yCerchio)))); } }

o :maLOL: )
Rispondi quotando