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

    [JAVA] Crea metodo contaParole in una stringa

    La consegna di questo esercizio mi chiede di creare una metodo contaParole (la classe fa riferimento al numero dell'esercizio cioè il 5, per questo "Es5") , che mi dà come output il numero di volte che una determinata parola che ho chiamato "riferimento", venga inserita nella frase in input dall'utente.Credo di aver sbagliato tutto, ma dopo vari tentativi non so più che fare.

    import java.util.Scanner;

    public class Es5{
    private String a[];


    public Es5(String a[]){
    this.setA(a);
    }


    public void setA(String a[]){
    this.a=a;
    }


    public int contaParola(String a[]){
    String riferimento = "Ciao";
    int count= 0;
    for(int i=0; i<a.length; i++){


    if(a.equals(riferimento)){

    count = count + 1;
    }
    }

    if(count!=0){
    System.out.println("Numero parole uguali a Ciao: " +count);
    }else{


    System.out.println("Non ci sono parole uguali a Ciao");

    }
    return count;

    }


    public static void main(String args[]){
    Es5 ogg = new Es5();
    System.out.println("Immetti frase");

    Scanner tastiera= new Scanner(System.in);
    String[] frase = tastiera.nextLine();
    ogg.setA(frase);
    ogg.contaParola(frase);
    }


    }



    forse manca un for nel main( visto che non mi controlla tutta la frase , ma soltanto la prima parola , cioè la prima stringa) e non sono neanche molto sicuro del primo for.
    Qualcuno può aiutarmi a sistemarlo ?

  2. #2
    Quote Originariamente inviata da _Marco_123 Visualizza il messaggio
    Credo di aver sbagliato tutto, ma dopo vari tentativi non so più che fare.

    forse manca un for nel main
    No, non è che "manca un for". È proprio tutto sbagliato e insensato.

    Intanto già qui:

    String[] frase = tastiera.nextLine();

    è sbagliato. nextLine() ti dà 1 String (NON un array di String) con la "linea" inserita dall'utente (che potrebbe contenere più parole, ovviamente).

    Ma la vera questione però è un'altra, quello che ti viene richiesto è:

    a) Data una singola stringa (es. dal nextLine() ), spezzarla per estrarre le singole parole e poi fare quel conteggio?

    oppure

    b) Ottenere già da Scanner più parole singole (in un ciclo ovviamente) e su queste fare quel conteggio?
    AndreaSenior Java developerSCJP 5 (91%) – SCWCD 5 (94%)
    Il mio nuovo sito-blog italiano sulla programmazione: andbin.it

  3. #3
    Ti richiede di ottenere da Scanner più parole e su queste fare il conteggio (b).

  4. #4
    Quote Originariamente inviata da _Marco_123 Visualizza il messaggio
    Ti richiede di ottenere da Scanner più parole e su queste fare il conteggio (b).
    Bene, allora devi usare il next() non il nextLine(). Ad ogni next() hai già una parola singola in quanto Scanner spezza già sui whitespace.

    Ci sono però 2 questioni che devi valutare:
    1) Lo standard-input è sempre in attesa di qualcosa in input, non termina mai di per sé (a meno che venga rediretto da un file, dove una fine fisica ovviamente c'è). Quindi quando vuoi terminare l'input? Quando si incontra una parola "speciale"? Dopo un numero fisso N di parole? Quando lo standard-input viene "chiuso" (sui Windows si fa con CTRL+Z e poi invio) ?

    2) Devi conteggiare una certa parola. Puoi farlo "al volo": leggo una parola, è quella? sì allora .... poi leggo un'altra parola ecc...
    Oppure puoi collezionarle tutte in un array o collezione e poi fare dopo la ricerca e conteggio. Dipende da cosa ti è stato chiesto espressamente.
    AndreaSenior Java developerSCJP 5 (91%) – SCWCD 5 (94%)
    Il mio nuovo sito-blog italiano sulla programmazione: andbin.it

Tag per questa discussione

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 © 2020 vBulletin Solutions, Inc. All rights reserved.