Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Java Conteggio di n Stringhe

    Ciao a tutti ho un problema con questo listato:
    codice:
    import java.io.*;
         public class Leggiz  {
    	public static void main (String[] args) throws Exception {	    
    	    BufferedReader input = new BufferedReader( new InputStreamReader( System.in ));
    	     String line;
    	     Boolean i;
    	     int k = 0;
    	     try {
    	     do {
    	     //acquisisce le righe
    	     System.out.println("Scrivi la riga qui: ");
    	     line = input.readLine();
    	     }
    	     while ( line == null || !line.equals("") ); 
    	     i = Boolean.parseBoolean( line );
    	     while (i = true)
    	     { k++
    	     System.out.println("Fine stringhe. Hai scritto: " + k + "Stringhe in tutto.");
    	     }
    	     // fine try
    	 }   catch (IOException ex) {
    	     System.err.println("Si è verificato un errore. ");
    	     ex.printStackTrace();
    	}
           }
    }
    Vorrei che, dopo aver inserito n stringhe, il programma si interrompa se metto una stringa vuota ("") e mi restituisca il numero di stringhe immesse. cosa devo scrivere ?
    Così com'è inizializza k parte fino all'infinito !

  2. #2
    Utente di HTML.it L'avatar di Ed_Bunker
    Registrato dal
    Jul 2003
    Messaggi
    1,119
    Dei considerare che una linea vuota non la metti effettivamente perche' dando invio il sistema "legge" un carriage return + line feed (Almeno cosi' mi pare di ricordare).

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    11
    Se non ho capito male vuoi leggere le stringhe 1 per ogni linea,quando immetti una stringa vuota
    nella linea(mandi solo a capo) vuoi terminare.

    Se è così basta che nel WHILE metti line.length!=0

    do{
    ....
    }while (line.length!=0)

    Ciao

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,325
    Originariamente inviato da antig
    Se è così basta che nel WHILE metti line.length!=0

    do{
    ....
    }while (line.length!=0)

    Ciao
    line.length().
    length() è un metodo della classe String.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Ciao a tutti
    conosco il comando line.length() però ciò che mi chiedo è:
    come faccio a stampare la stringa più lunga se mi ritorna la lunghezza dell'ultima stringa digitata ?
    codice:
    import java.io.*;
    //import java.lang.*;
         public class LeggiNum  {
    	public static void main (String[] args) throws Exception {	    
    	    BufferedReader input = new BufferedReader( new InputStreamReader( System.in ));
    	     String line;
    	     int i;
    	     try {
    	     System.out.println("Per uscire dal programma digitare: esci.");
    	     do {
    	     //acquisisce le righe
    	     System.out.println("Scrivi la riga qui: ");
    	     line = input.readLine();
    	     i = line.length(); // memorizza la lunghezza della stringa
    	     }
    	     while (!line.equals("esci"));
    	     { 	     
    	     System.out.println("Fine stringhe. La stringa piu' lunga che hai scritto e' di: " + i + " caratteri.");
    	     }
    	     // fine try
    	 }   catch (IOException ex) {
    	     System.err.println("Si è verificato un errore. ");
    	     ex.printStackTrace();
    	}
           }
    }
    ecco quando lancio il programma mi ritorna sempre la lunghezza 4 e cioè quella di ("esci").
    Spero di essermi spiegato anche perchè io non sono molto pratico
    Grazie in anticipo
    Ciauz !!

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    230
    Prima di tutto tentiamo di spiegare perchè esce 4 che è proprio la dimensione di esci:

    quando scrivi:
    codice:
    .....
    do {
    	     //acquisisce le righe
    	     System.out.println("Scrivi la riga qui: ");
    	     line = input.readLine();
    	     i = line.length(); // memorizza la lunghezza della stringa
    	     }
    }
    while (!line.equals("esci"));
     { 	     
    System.out.println("Fine stringhe. La stringa piu' lunga che hai scritto e' di: " + i + " caratteri.");
    	     }
    ...
    sarà stamapata il valore di i il quale è la dimensione della riga "corrente" cioè quella che hai appeno digitato ( ogni volta che digiti una nuova riga sovrascrivi il valore contenuto in i ad esempio la prima volta scrivi car ->i=3 la seconda volta giochi->i=6 e così via)
    Potresti risolvere il tuo problema in diversi modi ad esempio potresti inserire qualcosa del tipo
    codice:
    int max_lenght = 0
    if(max_lenght<i){
    max_lenght = i;
    }
    
    ....
    
    System.out.println("Fine stringhe. La stringa piu' lunga che hai scritto e' di: " + max_lenght + " caratteri.");
    quindi in max_lenght ti ritroverai la stringa con lunghezza massima
    un'altra soluzione che forse è migliore è quella di crearti un vettore di stringhe nel quale inserisci le stringhe che digiti e poi fare un controllo per trovare quale è la string più lunga.
    Avendo a disposizione il vettore con tutte le stringhe potrai eseguire anche altre operazioni su di esse.

    codice:
    int K= 0;
    int NMAX = 20; numero massimo di stringhe che scriverai
    String [] lines = new String[NMAX]  
    do {
    	     //acquisisce le righe
    	     System.out.println("Scrivi la riga qui: ");
    	     lines[K] = input.readLine();
    	      k++;
    	     }
    }
    while (!line[k-1].equals("esci"));
    una volta che hai tutte le stringhe nel tuo vettore ti scrivi un bel metodo che fa la ricerca della stringa più lunga all'interno del vettore lines...potresti iniziare da solo

  7. #7
    Ciao e grazie per la risposta.
    Mi sono messo all'opera e mi chiedevo: invece di limitare le mie stringhe in un array non posso fare in modo che ogni numero ricavato da line.length() possa essere messo in un array di interi tipo int[] e poi fare un confronto tra tutti i numeri ricavati e stampare quello più grande ?! Per esempio:
    codice:
    System.out.println("Scrivi la riga qui: ");
    line = input.readLine();
    a = line.lenght();
    int max_length[]= new int []; // creo un array di interi che memorizza tutti i valori di a
    A questo punto mi fermo anche perchè credo di aver detto una castroneria !!
    Se facessi così cosa ne pensi ?!
    Non riesco a raggiungere un livello di astrazione abbastanza alto
    Intanto provo con i tuoi primi 2 consigli.

    Ciauz !!!!!

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    230
    Originariamente inviato da Raganello
    Ciao e grazie per la risposta.
    Mi sono messo all'opera e mi chiedevo: invece di limitare le mie stringhe in un array non posso fare in modo che ogni numero ricavato da line.length() possa essere messo in un array di interi tipo int[] e poi fare un confronto tra tutti i numeri ricavati e stampare quello più grande ?! Per esempio:
    codice:
    System.out.println("Scrivi la riga qui: ");
    line = input.readLine();
    a = line.lenght();
    int max_length[]= new int []; // creo un array di interi che memorizza tutti i valori di a
    certo che puoi fare come dici tu il mio consiglio di "conservare" le stringhe non è limitante anzi puoi fare anche altre operazioni (trovare il minimo, trovare quale è la stringa con max lenght, ecc. poi ovviamente dipende anche da quello che deve fare il tuo programma.

    Penso che sei alle prime armi e forse non sei molto abituato a programmare... ti consiglio di usare per le variabili metodi e quan'altro dei nomi qunto + appropriati è possibile, in modo da non andare in confusione e di facilitare la lettura da parte di altri.
    ad esempio il vettore di interi max_lenght chiamalo semplicemente lenght[] perchè in esso ci saranno le lunghezze delle stringhe poi trovi il massimo e quindi avrai la variabile max_lenght

    Ovviamente non voglio dare lezioni sono semplici consigli

    A questo punto mi fermo anche perchè credo di aver detto una castroneria !!
    Se facessi così cosa ne pensi ?!
    Non riesco a raggiungere un livello di astrazione abbastanza alto
    Intanto provo con i tuoi primi 2 consigli.

    Ciauz !!!!!
    non hai detto una castroneria hai trovato un'altra soluzione, poi con l'esperienza, pazienza e pratica capirai da solo quale è la soluzione + appropriata per il tuo problema.

    Non riesco a capire cosa intendi quando dici " un livello di astrazione abbastanza alto" me lo spieghi?
    Ciao

  9. #9
    Bhè...
    diciamo che l'astrazione è trovare la soluzione migliore per risolvere un dato problema, è quindi come risolvere un problema capendo cosa scrivere e cosa farà.

    Nella programmazione per esempio:

    Definiamo l'astrazione informatica come una descrizione semplificata di un sistema; soffermandoci su alcuni elementi dettagli e proprietà ed eludendone altri. L'astrazione è fortemente legata, quindi, al concetto di scopo informatico (cioè soffermarci su alcune caratteristiche dell'ambiente che ci circonda).

    La astrazione ha portato alla concretizzazione di un modello utilizzato per descrivere le funzionalità del software e per fare delle previsioni sul suo comportamento.

    (fonte wikipedia)

    Cosa ne pensi ?

  10. #10
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    230
    Be i concetti sono giusti ma quando programmi tu cosa fai per astrarre le tue classi ?
    Ora si sfocia nella filosofia della programmazione....

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.