Results 1 to 7 of 7

Thread: Help java

  1. #1
    Hador's Avatar
    Join Date
    Mar 2004
    Location
    Milano
    Posts
    31.321

    Default Help java

    mi serve un cristo di modo intelligente per leggere da file testo dalla posizione X alla posizione Y (in numeri di caratteri). C'è un modo più furbo piuttosto a fare un for carattere per carattere?
    sto scrivendo una metrica per le line of code e mi sta tirando scemo

  2. #2
    Lieutenant Commander Alkabar's Avatar
    Join Date
    Feb 2004
    Location
    Netherlands.
    Posts
    19.975

    Default

    Quote Originally Posted by Hador View Post
    mi serve un cristo di modo intelligente per leggere da file testo dalla posizione X alla posizione Y (in numeri di caratteri). C'è un modo più furbo piuttosto a fare un for carattere per carattere?
    sto scrivendo una metrica per le line of code e mi sta tirando scemo
    Leggi tutte le linee (vuoi il codice ?), le metti in una stringa, hai concettualmente un vettore di caratteri, e poi li leggi da X a Y a seconda della posizione nel vettore.

    Forse non capisco il problema.

  3. #3
    Lieutenant Commander Rayvaughan's Avatar
    Join Date
    Mar 2005
    Location
    45.663989,8.783906
    Posts
    17.274

    Default

    tutte le righe le metti in array di caratteri? string.toCharArray()

    bho

  4. #4
    Chief Petty Officer Darkwave's Avatar
    Join Date
    Jan 2004
    Location
    Milano Prov
    Posts
    1.464

    Default

    Io io voglio il codice che mi sto dilettando a imparare Java da poco e un po' di codice esempio non è mai male (tipo immagino sia sotto System qualcosa la lettura di un files, ma ha un miliardo di librerie sto Java).
    Attivo a seconda del momento su
    THE ELDER SCROLL ONLINE
    GUILD WAR 2
    LORD OF THE RING ONLINE (server Laurentlin)
    DIABLO 3
    GRIM DAWN

  5. #5
    Lieutenant Commander Alkabar's Avatar
    Join Date
    Feb 2004
    Location
    Netherlands.
    Posts
    19.975

    Default

    Senza la gestione delle eccezioni, che viene in Eclipse automatica:

    String everything = "";
    BufferedReader in = new BufferedReader(new FileReader(fileName));

    while ((line = in.readLine()) != null)
    everything = everything + line + "\n"; /*non so se lo considera l'a capo eventualmente toglilo*/

    Poi hai tutti i metodi della stringa su cui puoi vedere la lunghezza e tutto il resto come accederla da carattere x a carattere y.

  6. #6
    Lieutenant Commander Alkabar's Avatar
    Join Date
    Feb 2004
    Location
    Netherlands.
    Posts
    19.975

    Default

    Ce l'hai fatta Hador ?

  7. #7
    Hador's Avatar
    Join Date
    Mar 2004
    Location
    Milano
    Posts
    31.321

    Default

    ho fatto carattere per carattere, devo contare le LOC di una classe e metodi attualmente abbiamo fatto così non so se mi convince, in caso la miglioriamo prossimamente. Il fatto è che bufferreader aveva già un metodo per contare le linee se fossi riuscito tramite filereader o inputstream a passargli una "porzione" di file avrei potuto usare quello, il fatto è che essendo metriche di classe se in un file java ho 2 classi non deve contarmi la somma ma le due metriche relative (usiamo visitor dell'ast di eclipse per fare ste robe).
    fatto così, mi legge a vuoto fino alla posizione dove inizia la classe (che ricavo dai metodi dell'ast, è un visitor sto coso) e poi inizia a contare... è una porcata anche se il meglio delle porcate è come si trova il path del file - è un pugin di eclipse quindi la roba la mette nella cartella temporanea:

    String path = Platform.getInstanceLocation().getURL().toString() + Utils.getPath(node).toString().substring(1);
    path = path.substring(5); (perchè platform riporta il path nella forma file:/... quindi devo togliere il file:/)

    fis = new FileInputStream(path);
    inputStreamReader isr = new InputStreamReader(fis);
    BufferedReader br = new BufferedReader(isr);
    for (int i = 0; i < node.getStartPosition(); i++) {
    br.read();
    for (int i = 0; i < node.getLength(); i++) {
    char c = (char) br.read();
    if (c == '\n')
    value++;

    forse con la stringa è più pulito, ma a complessità mi sa che vince il metodo de merda
    Last edited by Hador; 3rd November 2008 at 10:32.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
[Output: 60.41 Kb. compressed to 50.93 Kb. by saving 9.48 Kb. (15.70%)]