Ciao a tutti! Ho un problema con questo esercizio che non ci salto fuori:
Quella che segue è la classe che io precedentemente ho definito sulla base di un altro esercizio:
codice:
class Rettangolo2 {
public int larghezza;
public int altezza;
public String[][] matrice;
/** Creates a new instance of Rettangolo2 */
public Rettangolo2(int larg, int alt, String car) {
larghezza=larg;
altezza= alt;
matrice = new String[altezza][larghezza];
for(int i=0; i < altezza; i++) {
for(int z=0; z < larghezza; z++) {
matrice[i][z] = car;
}
}
}
/** Creates a new instance of Rettangolo2 */
public Rettangolo2(int lato, String car) {
larghezza = lato;
altezza = lato;
matrice = new String[altezza][larghezza];
for (int x = 0; x < altezza; x++) {
for (int y = 0; y < larghezza; y++) {
matrice[x][y] = car;
}
}
}
public static String GetString(Rettangolo2 rett){
String s = "";
for(int i=0; i < rett.altezza; i++) {
for(int z=0; z < rett.larghezza; z++) {
s += rett.matrice[i][z];
}
s += "\n";
}
return s;
}
public static String CopyAt (Rettangolo2 r1, Rettangolo2 r2, int x, int y) {
String s = "";
if (x < r1.matrice.length && y < r1.matrice[0].length) {
if (r1.matrice.length > r2.matrice.length+x && r1.matrice[0].length > r2.matrice[0].length+y) {
for (int i = 0; i < r2.matrice.length; i++) {
for (int j = 0; j < r2.matrice[0].length; j++)
r1.matrice[i+x][j+y] = r2.matrice[i][j];
}
s += Rettangolo2.GetString(r1);
} else {
s += "Errore! r2 e' piu' grande di r1 o r2 eccede rispetto ad r1";
}
} else {
s += "Errore! Il punto (x,y) si trova al di fuori di r1";
}
return s;
}
}
Questo è il testo dell'esercizio:
1. Creare un'istanza di Rettangolo, denominata lavagna con dimensione 15x30 e stringa "**".
2. Creare i rettangoli e quadrati opportuni in modo da ottenere le seguenti figure all'interno di Lavagna e stampare a video Lavagna: (immagine in allegato)
Questo è il programmino che io ho definito per per stampare i quadrati/rettangoli:
codice:
class UsoRettangolo3 {
public static void main(String[] args) {
Rettangolo2 lavagna = new Rettangolo2(30,11,"**");
Rettangolo2 a = new Rettangolo2(5,3," ");
System.out.println(Rettangolo2.CopyAt(lavagna,a,2,2));
}
}
Il problema è che il primo rettangolo dentro al rettangolo "lavagna" parte, data la coordinata x, dopo il quinto asterisco mentre il rettangolo "lavagna" non è composto da singoli asterischi ma da coppie di asterischi per orizzontale..problema simile anche con gli altri rettangoli..
Non so cosa fare
..qualcuno mi può dare una mano o eventualmente aiutarmi a ragionare?
Grazie mille a tutti in anticipo!