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.