damocle ha scritto:
ho qualche problema nel riuscire leggere l'effettivo pezzo degli scacchi separatamente dalla grandezza della matrice e poi la matrice. non riesco in pratica a scrivere una funzione che legga il nome del pezzo e lo inserisca in una variabile stringa e un altra funzione che legga le dimensioni della matrice e che vada a leggere ogni cella della matrice contenuta nel file e la inserisca in una matrice che creo io.
No, non è un buon approccio. Intendo il fatto di fare una "funzione" solo per un dato del file, un'altra "funzione" per un altro dato, ecc.. Insomma, dovresti innanzitutto ragionare in modo più
object-oriented.
Hai un file con vari dati correlati, allora .... definisci una classe che "modella" quei dati! Ecco un aiuto per l'inizio:
public class DatiFile {
private String nomePezzo;
private int numeroRighe;
private int numeroColonne;
// ... continua tu, con altri campi, costruttore/i, metodi getter/setter, ecc....
}
Poi da qualche parte (NON in DatiFile, che serve SOLO a modellare i dati), puoi fare un metodo del tipo:
public static DatiFile leggiFile(File file) throws IOException
Il quale "apre" il file (con quale tecnica, lo scegli tu), legge i dati, crea/popola l'oggetto DatiFile, chiude la/e risorsa/e e infine restituisce l'oggetto DatiFile. Se per leggere il file usi le classi di I/O base (non es. Scanner), che lanciano IOException, allora un errore "serio" sul I/O lo segnali appunto lasciando che leggiFile lanci fuori IOException.
Poi ci possono essere altri errori di "struttura" del file ma non so cosa ti è stato richiesto/suggerito di fare a riguardo. Cioè cosa intendi fare se il file fosse "malformato". Cosa deve succedere se il nome del pezzo manca o è sbagliato? Se la seconda riga non contiene 2 valori? Se la seconda riga indica una matrice di 4 righe ma poi dopo ce ne sono solo 3? Sono tutte situazioni che denotano un file "malformato". Cosa fare a riguardo devi stabilirlo tu. Un minimo di validazione sarebbe buona cosa ma appunto devi valutare tu. E per segnalare questi errori, idem lanci fuori da leggiFile una eccezione, che potrebbe essere sempre un IOException o una tua sottoclasse di IOException o altro.