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

    Java Parole in verticale HELP!

    Ciao! Sono alle prime armi con Java e dovrei svolgere il seguente esercizio:

    /* Scrivere un metodo che riceve tre stringhe e le stampa in verticale una accanto all’altra
    Ad esempio: date “ciao”, “buondì”, “hello”, stampa:
    c b h
    i u e
    a o l
    o n l
    d o
    ì̀ */

    Non riesco a capire dove sbaglio, quando eseguo il programma mi da il seguente errore e la seconda e terza parola vengono tagliate anche se ho fatto un metodo per far sì che ciò non accada:


    c b h
    i u e
    a o l
    o n l
    Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 5
    at java.lang.String.substring(String.java:1963)
    at StringaVerticale.cicloWhile(StringaVerticale.java:56)
    at StringaVerticale.main(StringaVerticale.java:70)


    ----------------------------------------------------------------

    public
    class StringaVerticale

    {
    String parola1;
    String parola2;
    String parola3;
    int maxlen = 0;

    public StringaVerticale(String parola1, String parola2, String parola3)
    {
    this.parola1 = parola1;
    this.parola2 = parola2;
    this.parola3 = parola3;
    }

    public int maxLen()
    {
    if (parola1.length() >= parola2.length() && parola1.length() >= parola3.length())
    {
    return maxlen = parola1.length();
    }

    else if (parola2.length() >= parola1.length() && parola2.length() >= parola3.length())
    {
    return maxlen = parola2.length();
    }


    else if (parola3.length() >= parola1.length() && parola3.length() >= parola2.length())
    {
    return maxlen = parola3.length();
    }

    else
    {
    return maxlen;
    }
    }

    public void cicloWhile()
    {
    int count0 = 0;
    int count1 = 1;

    while (count0 < maxlen)
    {
    System.out.print(parola1.substring(count0, count1)+ " ");
    System.out.print(parola2.substring(count0, count1)+ " ");
    System.out.println(parola3.substring(count0, count1)+ " ");

    count0++;
    count1++;
    }
    }

    public static void main(String[] args)
    {
    StringaVerticale newstring = new StringaVerticale("ciao", "buondi'", "hello");


    System.out.println(newstring.maxLen());
    newstring.cicloWhile();
    }
    }

    ----------------------------------------------------------------

    Inoltre se elimino "System.out.println(newstring.maxLen());" ed eseguo il programma non mi viene restituito niente.

  2. #2
    Quote Originariamente inviata da andrewver Visualizza il messaggio
    Ciao! Sono alle prime armi con Java e dovrei svolgere il seguente esercizio:

    /* Scrivere un metodo che riceve tre stringhe e le stampa in verticale una accanto all’altra
    Ad esempio: date “ciao”, “buondì”, “hello”, stampa:
    c b h
    i u e
    a o l
    o n l
    d o
    ì̀ */

    Non riesco a capire dove sbaglio, quando eseguo il programma mi da il seguente errore e la seconda e terza parola vengono tagliate anche se ho fatto un metodo per far sì che ciò non accada:


    c b h
    i u e
    a o l
    o n l
    Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 5
    at java.lang.String.substring(String.java:1963)
    at StringaVerticale.cicloWhile(StringaVerticale.java:56)
    at StringaVerticale.main(StringaVerticale.java:70)


    ----------------------------------------------------------------

    public
    class StringaVerticale

    {
    String parola1;
    String parola2;
    String parola3;
    int maxlen = 0;

    public StringaVerticale(String parola1, String parola2, String parola3)
    {
    this.parola1 = parola1;
    this.parola2 = parola2;
    this.parola3 = parola3;
    }

    public int maxLen()
    {
    if (parola1.length() >= parola2.length() && parola1.length() >= parola3.length())
    {
    return maxlen = parola1.length();
    }

    else if (parola2.length() >= parola1.length() && parola2.length() >= parola3.length())
    {
    return maxlen = parola2.length();
    }


    else if (parola3.length() >= parola1.length() && parola3.length() >= parola2.length())
    {
    return maxlen = parola3.length();
    }

    else
    {
    return maxlen;
    }
    }

    public void cicloWhile()
    {
    int count0 = 0;
    int count1 = 1;

    while (count0 < maxlen)
    {
    System.out.print(parola1.substring(count0, count1)+ " ");
    System.out.print(parola2.substring(count0, count1)+ " ");
    System.out.println(parola3.substring(count0, count1)+ " ");

    count0++;
    count1++;
    }
    }

    public static void main(String[] args)
    {
    StringaVerticale newstring = new StringaVerticale("ciao", "buondi'", "hello");


    System.out.println(newstring.maxLen());
    newstring.cicloWhile();
    }
    }

    ----------------------------------------------------------------

    Inoltre se elimino "System.out.println(newstring.maxLen());" ed eseguo il programma non mi viene restituito niente.
    Ti sto risolvendo il tuo problema, non appena avrò finito ti allegherò il file

  3. #3

    Risolto

    Quote Originariamente inviata da antoniob98 Visualizza il messaggio
    Ti sto risolvendo il tuo problema, non appena avrò finito ti allegherò il file
    Ecco a tutto ciò che ti serve
    Ti lascio in allegato, oltre al progetto, un immagine che mostra il programma in fase di run.
    Cattura.jpg
    Link Programma

    Fammi sapere cosa ne pensi

  4. #4
    Quote Originariamente inviata da antoniob98 Visualizza il messaggio
    Ecco a tutto ciò che ti serve
    Ti lascio in allegato, oltre al progetto, un immagine che mostra il programma in fase di run.
    Cattura.jpg
    Link Programma

    Fammi sapere cosa ne pensi
    Capito, Grazie mille !!

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Java ha una sezione dedicata.
    In futuro posta le discussioni inerenti questi linguaggio nel forum "Java".


    Sposto.


    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

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