Problemi con un esercizio scolastico

di il
1 risposte

Problemi con un esercizio scolastico

Nello svolgere un esercizio per l'esame di programmazione 1 non riesco a farlo funzionare, qualcuno riesce ad aiutarmi? questo è il testo dell'esercizio.
Scrivere un programma Java che chieda all’utente di inserire una frase tramite tastiera e,
utilizzando gli opportuni metodi sulle stringhe, esegua le seguenti operazioni:
? se la frase contiene 2 o più parole:
? stampi a video che la frase contiene due o più parole;
? stampi a video la prima parola e la sua lunghezza;
? stampi a video l’ultima parola e la sua lunghezza;
? se la frase contiene una sola parola:
? stampi a video che la frase contiene una sola parola;
? stampi a video la parola e la sua lunghezza;
? se la frase inserita è vuota:
? stampi a video che la frase non contiene parole.
Per semplicità, si assuma che la frase non inizi e non finisca con degli spazi, e che ogni parola sia
separata dalla successiva usando un solo spazio. Grazie a questa assunzione, le parole sono
individuabili semplicemente cercando gli spazi.


io l'ho scritto così il codice:
import java.util.Scanner;

public class ese3_2 {
    public static void main(String[] args) {

        Scanner tastiera = new Scanner (System.in);
        System.out.println("Scrivi una frase a tuo piacere:");
        String frase = tastiera.nextLine();

        int spazio1 = frase.indexOf(" ");
        String parola1 = frase.substring(0 , spazio1 );
        

        String restoDellaFrase = frase.substring(++spazio1);
        int spazio2 = restoDellaFrase.indexOf(" ");
        String parola2 = restoDellaFrase.substring(0 , spazio2);
        

       

        
        if (parola1 == null && parola2 == null){
            System.out.println("la frase non contiene parole");
            System.exit(0);
        }
        else if (parola2==null){
            System.out.println("la frase contiene una parola: ");
            int lunghezzaP1 = parola1.length();
            System.out.println("la parola " + parola1 + " e' lunga " + lunghezzaP1 + " lettere.");
        }
        else {
            System.out.println("la frase contiene due parole: ");
            int lunghezzaP1 = parola1.length();
            System.out.println("la parola " + parola1 + " e' lunga " + lunghezzaP1 + " lettere.");
            int lunghezzaP2 = parola2.length();
            System.out.println("la parola " + parola2 + " e' lunga " + lunghezzaP2 + " lettere.");
        }
    
        
    }
    
}

per compilare compila ma poi quando inserisco una frase composta da ua sola parola o da zero mi esce questa cosa qua e non capisco come risolvere il problema

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: begin 0, end -1, length 4
at java.base/java.lang.String.checkBoundsBeginEnd(String.java:4601)
at java.base/java.lang.String.substring(String.java:2704)
at ese3_2.main(ese3_2.java:11)


alcuni dati cambiano in base alla parola che scrivo, qua per esempio avevo scritto "ciao".

1 Risposte

  • Re: Problemi con un esercizio scolastico

    Usa I tag code per il codice o non si capisce.

    Comunque se scrivi solo ciao non troverai lo spazio che cerchi e avrai un errore della substr
Devi accedere o registrarti per scrivere nel forum
1 risposte