Buongiorno a tutti!
Devo svolgere un esercizio in cui viene chiesto, preso in input un intero n e una stringa, di stampare un quadrato di lato n con all'interno la stringa.
Input: 8 My String
Output
********
*My Str*
*ing *
* *
* *
* *
* *
********
I problemi che sto riscontrando sono due.
Quando provo a stampare una stringa che ha la stessa lunghezza del "lato interno", n-2 per intenderci, mi da questo risultato:
10 Kusanagi
**********
*Kusanagi*
* *
*a n a g i *
* *
* *
* *
* *
* *
**********
La parte di codice interessata è questa:
number è l'intero.
phrase è la stringa.
emptyMind stampa uno spazio.
Questo else if sta dentro un for
for (int j = 0; j < number - 2; j++)
else if (phrase.length() <= number -2){
System.out.print('*');
for (int k = 1; k < phrase.length(); k++) System.out.print(phrase.charAt(k));
for (int l = phrase.length()-1; l < number - 2; l++) System.out.print(emptyMind);
System.out.println('*');
phrase = phrase.replace(phrase, emptyMind);
}
Non riesco a capire perchè se metto "phrase = phrase.replace(phrase, emptyMind);" fuori dall'else if, non ci sono ripetizioni; mentre se è dento si ripete "a n a g i".
Il secondo problema riguarda quando devo stampare una stringa lunga.
10 Ghost in the Shell
**********
*Ghost in*
* the Shell*
* *
* *
* *
* *
* *
* *
**********
Attualmente ho questo output perchè non ho capito come impostare una lunghezza predefinita per stampare una sottostringa.
So di avere scritto molto e di chiedere molto, ma sono giorni che ci lavoro e che non ne vengo a capo.