Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Vettore di Stringhe

  1. #1

    Vettore di Stringhe

    Scrivere un programma java capace di individuare le parole che compongono un testo assegnato, dove, per parola si intende un insieme di più di 3 caratteri, una volta individuate le parole valide, vedere la frequenza con la quale esse si ripetono all'interno della stringa, esprimendo questo valore in percentuale, il valore effettivo ed individuare la moda.
    metodi applicabili: replaceAll, split

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    E questa è la consegna.
    Bene.
    Tu cos'hai fatto? Dove ti sei fermato? Quali problemi hai riscontrato?
    Posta il codice della tua soluzione (anche se parziale).

    Ricordo che, come da Regolamento interno, in questo forum non si fanno gli esercizi per casa e non si sviluppa codice per conto terzi.


    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

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Daniele07 Visualizza il messaggio
    Scrivere un programma java capace di individuare le parole che compongono un testo assegnato, dove, per parola si intende un insieme di più di 3 caratteri, una volta individuate le parole valide, vedere la frequenza con la quale esse si ripetono all'interno della stringa, esprimendo questo valore in percentuale, il valore effettivo ed individuare la moda.
    metodi applicabili: replaceAll, split
    Nessuno, credo, ti scriverà il codice completo (nemmeno io, anche perché ho sempre poco tempo). Ma qualche indizio da darti, è ok, ovviamente.

    Visto che parli di split (e non del find di java.util.regex.Matcher) deduco che l'unica opzione accettabile sia quella di "spezzare" innanzitutto il testo usando spazi (e simboli di punteggiatura magari) come separatori al fine di ottenere i singoli token che sono le parole.
    Per questo basta appunto stringa.split(" ...regex... ") con una apposita regex che devi ideare tu ed ottieni un bel array con le parole.

    A quel punto fai un ciclo sulle parole e consideri solo quelle con più di 3 caratteri (banale test sulla lunghezza). A questo punto devi conteggiare le occorrenze di ciascuna parola. La cosa più logica è una "mappa" in cui la chiave è la parola mentre il valore è un "contatore" (numero intero, chiaramente).

    Una volta esaminate tutte le parole, hai una mappa che contiene es. "ciao"-->1, "prova"-->2 ecc... A quel punto calcolare percentuali e altro è abbastanza lineare e semplice.

    Ti è servita questa spiegazione? Lo so che è abbastanza generale ma da questo devi partire.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    import java.util.Scanner;
    public class Funzioni {
    Scanner in = new Scanner (System.in);
    public String testo;
    public String vettore[];
    public Funzioni(){}
    public void Punteggiatura(String x){
    testo = testo.replaceAll(",", " ");
    testo = testo.replaceAll(".", " ");
    testo = testo.replaceAll("_", " ");
    testo = testo.replaceAll("!", " ");
    testo = testo.replaceAll("+", " ");
    testo = testo.replaceAll(" \\ ", " ");
    testo = testo.replaceAll(":", " ");
    testo = testo.replaceAll(";", " ");
    testo = testo.replaceAll("-", " ");
    testo = testo.replaceAll("?", " ");
    testo = testo.replaceAll("*", " ");
    testo = testo.replaceAll("=", " ");

    }
    public void suddivisione (){
    vettore = testo.split(" ");
    for (int i = 0; i<testo.length(); i++){
    System.out.println(vettore[i] + "//");
    }
    }

    public void parole (){
    int p=0;
    for (int i =0; i< vettore.length; i++){
    if(vettore[i].length()<3){
    vettore[i] = null;
    p++;
    }

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Innanzitutto ti assicuro che è possibile usare un solo split con una ben apposita e completa regex, senza quindi dover "sostituire" alcunché con replaceAll.
    Anche volendo fare più replaceAll, uno per ciascun simbolo (poco efficiente ma non è questo il punto/problema, chiaramente) devi tenere ben a mente che la stringa che passi a replaceAll rappresenta una "espressione regolare", in cui certi caratteri sono speciali. Ad esempio il punto "." nelle regex ha un significato particolare, vuol dire: un qualunque carattere.
    Quindi facendo:

    testo = testo.replaceAll(".", " ");

    vai a blankare l'intero testo!!

    Quindi innanzitutto cerca di comprendere l'uso delle espressioni regolari.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.