Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Implementazione in Java tramite diagramma UML

    Ciao ragazzi ho un problema per quanto riguarda questo esercizio:
    (Ve lo allego in formato pdf) --> http://img14.imageshack.us/img14/5624/lab5.pdf
    In particolar modo non capisco cosa voglia dire in questo punto:
    "Il costruttore converte il valore del parametro nella corrispondente sequenza di cifre. La lunghezza dell'array è pari al numero di cifre."

    Ma se il costruttore è un array di byte, e il paramentro del metodo Numero è un long... come faccio in questo caso?

  2. #2

    Re: Implementazione in Java tramite diagramma UML

    Originariamente inviato da Impact
    In particolar modo non capisco cosa voglia dire in questo punto:
    "Il costruttore converte il valore del parametro nella corrispondente sequenza di cifre. La lunghezza dell'array è pari al numero di cifre."

    Ma se il costruttore è un array di byte, e il paramentro del metodo Numero è un long... come faccio in questo caso?
    In base al long, che gli viene passato, devi creare un array di byte e passarlo al campo cifre.

  3. #3

    Re: Re: Implementazione in Java tramite diagramma UML

    Originariamente inviato da VincenzoTheBest
    In base al long, che gli viene passato, devi creare un array di byte e passarlo al campo cifre.
    Uhm... creo un array che ha dimensione uguale a long? e poi passo i valori di questo array a cifre... giusto?

  4. #4

    Re: Implementazione in Java tramite diagramma UML

    Originariamente inviato da Impact
    ...
    Ma se il costruttore è un array di byte, e il paramentro del metodo Numero è un long...
    ...
    Stai facendo un po' di confusione. Il costruttore è Numero e riceve come parametro un valore di tipo long.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  5. #5

    Re: Re: Implementazione in Java tramite diagramma UML

    Originariamente inviato da satifal
    Stai facendo un po' di confusione. Il costruttore è Numero e riceve come parametro un valore di tipo long.
    Si giusto, hai ragione... grazie per avermelo fatto notare.. Comunque la costruzione di quel punto avviene come ho detto io nel post precedente?

  6. #6
    Nel costruttore devi individuare il numero di cifre di cui è composto il parametro (long) passato ed istanziare un array di byte di dimensione pari a tale numero. Successivamente dovrai inserire nell'array ciascuna cifra inserendo quella meno significariva alla posizione 0 e così via.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  7. #7
    Grazie ragazzi, ci sono riuscito!

    codice:
    import java.util.*;
    abstract class Numero2
    {
    	protected byte [] cifre;
    	
    	public Numero2 (long num)
    	{
    	long res = num;
    	int numCifre=0;
    	while (num > 0)
    		{
    		num = num / 10;
    		numCifre++;
    		}
    	cifre = new byte [numCifre];
    	for (int i=0;i<cifre.length;i++)
    		{
    		if (res > 0)
    		cifre[i] = (byte)(res % 10);
    		res = res/10;
    		}
    	}
    	public byte cifra()
    	{
    	return cifre[0];
    	}
    }
    class A2 extends Numero2
    {
    	public A2 (long num)
    	{
    	super(num);
    	}
    	public byte cifra()
    	{
    	return cifre[cifre.length-1];
    	}
    }
    class B2 extends Numero2
    {
    	public B2 (long num)
    	{
    	super(num);
    	}
    	public int codice()
    	{
    	int somma=0;
    	for (int i=0;i<cifre.length;i++)
    		{
    		somma += cifre[i];
    		}
    	return somma;
    	}
    	//public byte cifra()
    	//{
    	//return cifre[0];
    	//}
    }
    class Provazza
    {
    	public static void main (String [] args)
    	{
    	Numero2 [] vett = new Numero2 [100];
    	Random r = new Random(1888777);
    	for (int i=0;i<vett.length;i++)
    		{
    		int x = r.nextInt(1000000);
    		if (r.nextInt(2)==1)
    			vett[i] = new A2(x);
    		else
    			vett[i] = new B2(x);
    		}
    	//1) la somma dei valori restituiti da cifra()
    	int sommaCifra=0;
    	for (int i=0;i<vett.length;i++)
    		{
    		sommaCifra += vett[i].cifra();
    		}
    	System.out.print(sommaCifra + ", ");
    	//2) il massimo valore di codice
    	int maxCodice=0;
    	for (int i=0;i<vett.length;i++)
    		{
    		if (vett[i] instanceof B2 && ((B2)vett[i]).codice() > maxCodice)
    			maxCodice = ((B2)vett[i]).codice();
    		}
    	System.out.println(maxCodice + ";");
    	}
    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.