Forum Informatica Unict

LAUREA TRIENNALE (D.M. 270/04) => Programmazione 1, 9 CFU => Topic started by: Giovi89 on 28-01-2009, 23:33:42



Title: Esercizio uml
Post by: Giovi89 on 28-01-2009, 23:33:42
Salve a tutti ho provato a fare l'esercizio uml ma ho un problema con il main, secondo me il codice è giusto corregetelo e ditemi gli errori eccolo:

Code:
import classi.*;
import java.util.Random;
public class Main
{
public static void main(String [] args)
{
Random r = new Random (6353433);
A [] vett = new A [100];
for (int i=0; i<vett.length; i++) {
int   x = r.nextInt(10);
int   y = r.nextInt(100);
int   z = r.nextInt(30);
                     if (r.nextInt(2)==1)   vett[i] = new B(x, y, z);
    else    vett[i] = new C(x, y, z);}
//PRIMO QUESITO
int somma=0;
for (int i=0;i<vett.length;i++)
{
somma+=A[i].f();
}
//TERZO QUESITO
int cnt=0;
for(int y=0;y<vett.length;y++)
     if (vett[y] instanceof C) cnt++;
//SECONDO QUESITO
  int somma1=0;
   for(int y=0;y<vett.length;y++)
        if(vett[y].getclass().equals(B.class))
{
somma1+=vett[y].f(r.nextInt(47));
}
}
}


Title: Re:Esercizio uml
Post by: Blonic on 29-01-2009, 18:50:52
Il problema è qui probabilmente:
Code:
somma1+=vett[y].f(r.nextInt(47));

Devi fare il casting a B, NON MI CHIEDERE PERCHE'!!!!  (Non lo so neanch'io  :[Emoticon] Asd:)

La stringa diventerebbe così:
Code:
somma1+=(B)(vett[y].f(r.nextInt(47)));

Cmq ne stiamo parlando anche su un'altro thread, controlla