Richiesta errore programma

di il
19 risposte

19 Risposte - Pagina 2

  • Re: Richiesta errore programma

       import java.util.Scanner;  
    import java.io.File;  
    import java.util.Arrays;
    
    public class test_crittura {
        public static void main(String[] args) {
            int aaa=(int)'f'-48; 
          char[] chiave1;  
          chiave1= new char[5]; 
          aaa=aaa + 1;
          int i=0;
          System.out.println("aaa = " + aaa + "\n");
        try{
            File prova1= new File("prova.txt");
            Scanner input= new Scanner(prova1);
            try(PrintWriter output= new PrintWriter("outprova.txt")) 
            {while(input.hasNextLine() && i<chiave1.length) 
            {String riga= input.nextLine();
             System.out.println(riga);
             output.println(riga);
            if(riga.length()!=0)
            {
             System.out.println(riga.length());
             System.out.println(riga.charAt(3)+ "\n");
             char a = riga.charAt(3); 
             int a1 = (int)a; 
             System.out.println("a1= " + a1 + "\n");
             chiave1[i]=a;
            }
            }
            }
            System.out.println("chiave1 = " + Arrays.toString(chiave1));
          }
        catch(FileNotFoundException exc)
        {
         System.out.println("il file di input non esiste " + exc + "\n");    
        }
       }
     }
    
      

    mi scusi ancora ma non mi funziona lo stampa. Netbeans mi ha obbligato a inserire
    Arrays.toString(chiave1)  
    perchè altrimenti lo stampa che avevo scritto nel post precedente veniva con caratteri senza senso.
    tuttavia con questo metodo viene stampata
    chiave1
    in maniera non correnta.
    infatti esce cosi:
       aaa = 55
    
    Quant’è bella giovinezza,
    25
    n
    
    a1= 110
    
    
    che si fugge tuttavia
    21
     
    
    a1= 32
    
    
    chi vuol esser lieto, sia:
    26
     
    
    a1= 32
    
    
    di doman non c’è certezza.
    26
    d
    
    a1= 100
    
    chiave1 = [d , , , ]  
    dove sto sbagliando?
    Grazie
  • Re: Richiesta errore programma

    aletzunny ha scritto:


    mi scusi ancora ma non mi funziona lo stampa.
    Non hai ancora messo l'incremento di i

    aletzunny ha scritto:


    Netbeans mi ha obbligato a inserire
    Arrays.toString(chiave1)  
    perchè altrimenti lo stampa che avevo scritto nel post precedente veniva con caratteri senza senso.
    Sì è corretto il Arrays.toString in questo caso.

    Se passi al println SOLO l'array char[], viene invocato il println(char[]) che è fatto apposta per stampare in modo sensato e appropriato la sequenza di caratteri. Se invece facessi una "concatenazione" delle stringhe ovvero

    System.out.println("chiave1 = " + chiave1);

    Verrebbe invocato (implicitamente) il toString() su chiave1. E come già dicevo prima, gli array NON ridefiniscono (purtroppo) il toString(), resta quello ereditato da Object che è in grado solo di fornire una forma un po' "strana" che è qualcosa tipo [C@15db9742

    Quindi il Arrays.toString è corretto nel contesto della concatenazione.

    aletzunny ha scritto:


    tuttavia con questo metodo viene stampata
    chiave1
    in maniera non correnta.

    chiave1 = [d , , , ] [/code]
    Ripeto ancora che manca l'incremento.
  • Re: Richiesta errore programma

    Allora mi scusi ma non ho capito di cosa si parla con l'incremento della i.

    Dovrei mettere dopo il
    i=i+1
    ?
    Oppure dove va messo?
    Grazie
  • Re: Richiesta errore programma

    aletzunny ha scritto:


    Allora mi scusi ma non ho capito di cosa si parla con l'incremento della i.

    Dovrei mettere dopo il
    i=i+1
    ?
    Oppure dove va messo?
    Sì.

    chiave1[i++]=a;

    oppure

    chiave1[i]=a;
    i++;

    oppure

    chiave1[i]=a;
    i=i+1;


    ( i++; è equivalente a i=i+1; )
  • Re: Richiesta errore programma

    Grazie ancora
Devi accedere o registrarti per scrivere nel forum
19 risposte