Pages: 1 [2] 3   Go Down
Print
Author Topic: HEELP ME!! prova lab.  (Read 5158 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
simOne_fLuo
Guest
« Reply #15 on: 24-02-2009, 19:01:52 »

Una curiosità , hai creato tanti file.java , o hai messo tutto insieme??

tutto insieme..

Code:
import java.util.Random;
abstract class A{
protected int x;
public A(int _x){
x=_x;
}
abstract public int f();
}
class B extends A{
protected int y;
private D d;
public B(int _x, int _y, double _z){
d=new D(z);
y=_y;
super(x);
}
public int f(){
return x*x;
}
public int f(D d){
return (int)(z+_d.getZ());
}
}
class C extends B{
public C(int _x, int _y, double _z){
super(x,y,z);
}
public int f(){
return 7*y;
}
}
public class D{
private double z;
public D(double _z){
z=_z;
       }
public double getZ(){
return z;
}
}
public class lab
  {
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);
}
}
}
Logged
Manna
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 156



« Reply #16 on: 24-02-2009, 19:03:28 »

Io ho messo tutto in file diversi ma nella stessa cartella. Inizio dal main:

import java.util.Random;
public class riprova{
   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=new B(x,y,z);
            else vett=new C(x,y,z);
         }
      
      int somma=0;
      for(int i=0;i<vett.length;i++)
         somma+=vett.f();
      System.out.println(somma);
         
      somma=0;
      for(int i=0;i<vett.length;i++){
         D obj=new D(r.nextInt(47));
         somma+=((B)vett).f(obj);
         }
      System.out.println(somma);
         
      int cnt=0;
      for(int i=0;i<vett.length;i++)
         if(vett.getClass()==B.class) cnt++;
      System.out.println(cnt);
   }
}




public abstract class A{
   protected int x;
   
   public A(int _x){
      x=_x;
   }
   
   public abstract int f();
}





public class B extends A{
   protected int y;
   private D d;
   
   public B(int _x, int _y, double _z){
      super(_x);
      y=_y;
      d=new D(_z);
   }
   
   public int f(){
      return x*x;
   }
   
   public int f(D _d){
      return (int)(d.getZ()+_d.getZ());
   }
}





public class C extends B{
   
   public C(int _x, int _y, double _z){
      super(_x,_y,_z);
   }
   
   public int f(){
      return 7*y;
   }
}




public class D{
   private double z;
   
   public D(double _z){
      z=_z;
   }
   
   public double getZ(){
      return z;
   }
}
Logged

I'll be here...Why?...I'll be waiting...here...For what?...I'll be waiting...for you...so...If you come here...You'll find me...I promise!
simOne_fLuo
Guest
« Reply #17 on: 24-02-2009, 19:04:52 »

scusate ma mettere tutto insieme è un errore?? o si puo anke??
Logged
Manna
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 156



« Reply #18 on: 24-02-2009, 19:11:57 »

Si può anche...ma io ho avuto problemi...siccome preferisco l'altra strada solitamente metto in file divisi...nn dovrebbe cambiare nulla...solo che mi viene + facile da visualizzare e capire
Logged

I'll be here...Why?...I'll be waiting...here...For what?...I'll be waiting...for you...so...If you come here...You'll find me...I promise!
Acicatena86
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 404


See full me now who neon


« Reply #19 on: 24-02-2009, 19:12:12 »

Una curiosità , hai creato tanti file.java , o hai messo tutto insieme??

tutto insieme..

Code:
import java.util.Random;
abstract class A{
protected int x;
public A(int _x){
x=_x;
}
abstract public int f();
}
class B extends A{
protected int y;
private D d;
public B(int _x, int _y, double _z){
d=new D(z);
y=_y;
super(x);
}
public int f(){
return x*x;
}
public int f(D d){
return (int)(z+_d.getZ());
}
}
class C extends B{
public C(int _x, int _y, double _z){
super(x,y,z);
}
public int f(){
return 7*y;
}
}
public class D{
private double z;
public D(double _z){
z=_z;
       }
public double getZ(){
return z;
}
}
public class lab
  {
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);
}
}
}

Consiglio MOLTO utile.
Metti ogni classe in un file separato , così ti risulterà più facile individuare gli errori
Logged
simOne_fLuo
Guest
« Reply #20 on: 24-02-2009, 19:19:15 »

ragazzi ho separato i file.. e nella classe B:
Code:
class B extends A{
protected int y;
private D d;
public B(int _x, int _y, double _z){
d=new D(_z);
y=_y;
super(_x);
}
public int f(){
return x*x;
}
public int f(D _d){
return (int)(_z+_d.getZ());
}
}

mi da questi errori:

.\B.java:4: cannot find symbol
symbol  : constructor A()
location: class A
   public B(int _x, int _y, double _z){
                                           ^
.\B.java:7: call to super must be first statement in constructor
      super(_x);
                     ^
.\B.java:13: cannot find symbol
symbol  : variable _z
location: class B
      return (int)(_z+_d.getZ());
                             ^
.\B.java:13: inconvertible types
found   : <nulltype>
required: int
      return (int)(_z+_d.getZ());

ma intanto mi sembra corretta
« Last Edit: 24-02-2009, 19:32:44 by simOne_fLuo » Logged
simOne_fLuo
Guest
« Reply #21 on: 24-02-2009, 19:47:22 »

ULTIMI 2 ERRORI(spero) NON CAPISCO CHE SONO:

B.java:4: cannot find symbol
symbol  : constructor A()
location: class A
   public B(int _x, int _y, double _z){
                                           ^
B.java:7: call to super must be first statement in constructor
      super(_x);
                     ^


Il codice è:
Code:
class B extends A{
protected int y;
private D d;
public B(int _x, int _y, double _z){
d=new D(_z);
y=_y;
super(_x);
}
public int f(){
return x*x;
}
public int f(D _d){
return ((int)(d.getZ()+_d.getZ()));
}
}
Logged
Manna
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 156



« Reply #22 on: 24-02-2009, 19:49:38 »

Il super va messo sempre come prima istruzione se no da errore in compilazione
Logged

I'll be here...Why?...I'll be waiting...here...For what?...I'll be waiting...for you...so...If you come here...You'll find me...I promise!
Antoniods
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 475



« Reply #23 on: 24-02-2009, 19:51:12 »

nel costruttore di B la prima cosa che devi fare è super(_x);
Logged

"Ho fallito diversi esami all'università, un mio amico li ha sempre passati tutti al primo colpo. Ora lui è ingegnere alla Microsoft, ed io... io sono il capo della Microsoft". (Bill Gates)
simOne_fLuo
Guest
« Reply #24 on: 24-02-2009, 19:53:05 »

Il super va messo sempre come prima istruzione se no da errore in compilazione

grazie di tutto MANNA sei un grande...
e anke ad antoniods

cmq altri 2 sono spuntati..

lab.java:10: incompatible types
found   : B
required: A[]
         if(r.nextInt(2)==1) vett=new B(x,y,z);
                                                 ^
lab.java:11: incompatible types
found   : C
required: A[]
         else vett=new C(x,y,z);
                                  ^

vengono dal main.. ma non ho + il testo dell'esercizio.. quindi non so cosa non và..

ho solo questa parte:
Code:
import java.util.Random;
public class lab{
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=new B(x,y,z);
else vett=new C(x,y,z);
}
}
}
Logged
Antoniods
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 475



« Reply #25 on: 24-02-2009, 19:54:02 »

Scusa Manna non avevo letto la tua risposta!!!! ciao
Logged

"Ho fallito diversi esami all'università, un mio amico li ha sempre passati tutti al primo colpo. Ora lui è ingegnere alla Microsoft, ed io... io sono il capo della Microsoft". (Bill Gates)
Manna
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 156



« Reply #26 on: 24-02-2009, 19:59:21 »

Figurati...basta che ci si aiuti...nn è che mi offendo se risponde anche qualcun'altro...cmq nell'esercizio chiede:
1)la somma dei valori restituiti da f()
2)la somma dei valori restituiti da f(obj) dove obj è un oggetto di volta in volta generato con il parametro casuale r.nextInt(47)
3)il numero di istanze di classe B
Logged

I'll be here...Why?...I'll be waiting...here...For what?...I'll be waiting...for you...so...If you come here...You'll find me...I promise!
Antoniods
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 475



« Reply #27 on: 24-02-2009, 20:11:12 »

Code:
class Lab
{
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);
//System.out.println(x);
int y = r.nextInt(100);
//System.out.println("   " + y);
int z = r.nextInt(30);
//System.out.println("         " + z);
if (r.nextInt(2) == 1)
{
vett[i] = new B(x, y, z);
}
else
{
vett[i] = new C(x, y, z);
}
}

//SOMMA DEI VALORI RESTITUITI DA f()--------------------------------------------

int contaF = 0;
for (int i = 0; i < vett.length; i++)
{
contaF += vett[i].f();
}

System.out.println(contaF);

//SOMMA DEI VALORI RESTITUITI DA f(obj)--------------------------------------------

int contaFobj = 0;

for (int i = 0; i < vett.length; i++)
{
D obj = new D(r.nextInt(47));
contaFobj += ((B)vett[i]).f(obj);
}

System.out.println(contaFobj);

//NUMERO DI ISTANZE DI CLASSE B-----------------------------------------------------

int istanzeB = 0;
for (int i = 0; i < vett.length; i++)
{
if (!(vett[i] instanceof C))
istanzeB++;
}

System.out.println(istanzeB);
        }
   
}
Logged

"Ho fallito diversi esami all'università, un mio amico li ha sempre passati tutti al primo colpo. Ora lui è ingegnere alla Microsoft, ed io... io sono il capo della Microsoft". (Bill Gates)
simOne_fLuo
Guest
« Reply #28 on: 24-02-2009, 20:14:47 »

                int sommatoria_f=0;
      for(int i=0;i<vett.length;i++)
         sommatoria_f+=vett.f();
      int sommatoria_obj=0;
      for(int i=0;i<vett.length;i++){
         D obj=new D(r.nextInt(47));
         somma+=((B)vett).f(obj);
         }
      System.out.println(sommatoria_f);
      System.out.println(sommatoria_obj);

RAGAZZI 1 E 2 L'HO FATTO COSì MI SEMBRA CORRETTO. MI SPIEGATE IL 3°??
Logged
Antoniods
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 475



« Reply #29 on: 24-02-2009, 20:16:01 »

devi contare quante volte viene creato un oggetto di tipo B
Logged

"Ho fallito diversi esami all'università, un mio amico li ha sempre passati tutti al primo colpo. Ora lui è ingegnere alla Microsoft, ed io... io sono il capo della Microsoft". (Bill Gates)
Pages: 1 [2] 3   Go Up
Print
Jump to: