Vai al contenuto


Foto

[JAVA] Richieste di aiuto Java


Questa discussione e' stata archiviata Questo significa che non e' possibile rispondere
201 risposte a questa discussione

#101 p.nightmare

p.nightmare

    Dittatore

  • Amministratori
  • 97.663 Messaggi:

Inviato 29 novembre 2011 - 10:23

sì.

No real limits of any kind apply here - not even the sky
è diventato un tutt'uno con lo spazio...
PVoutput


#102 trallallero

trallallero

    Schiavo

  • Membri
  • StellettaStellettaStellettaStellettaStellettaStellettaStelletta
  • 16.188 Messaggi:

Inviato 29 novembre 2011 - 10:27

Nome variabile dinamico in Java ? :pua:

Che io sappia no, ma puoi usare arrays.
Don't worry, faith will come soon, like a recall but,
if you can't wait, just stop thinking at all 

 


#103 SuperMario=ITA=

SuperMario=ITA=

    Lo scemo del forum

  • Moderatori
  • 96.852 Messaggi:

Inviato 29 novembre 2011 - 10:27

sì.


:pua:

explain, faggot.
TghXItr.gif - Amare la Formattazione è la Soluzione al 90% dei Problemi della Vita

#104 SuperMario=ITA=

SuperMario=ITA=

    Lo scemo del forum

  • Moderatori
  • 96.852 Messaggi:

Inviato 29 novembre 2011 - 10:28

Nome variabile dinamico in Java ? :pua:

Che io sappia no, ma puoi usare arrays.


si ma zero voglia.

vabè, mi invento qualcosa
TghXItr.gif - Amare la Formattazione è la Soluzione al 90% dei Problemi della Vita

#105 trallallero

trallallero

    Schiavo

  • Membri
  • StellettaStellettaStellettaStellettaStellettaStellettaStelletta
  • 16.188 Messaggi:

Inviato 29 novembre 2011 - 10:30

@[/url]":1fc4hx86] Nome variabile dinamico in Java ? :pua:

Che io sappia no, ma puoi usare arrays.


si ma zero voglia.

vabè, mi invento qualcosa

Si ma aspetta la risposta di qualcun altro, io non sono esperto java.
Solo che a naso mi sembra impossibile (mica è bash o altro scripting language).
Don't worry, faith will come soon, like a recall but,
if you can't wait, just stop thinking at all 

 


#106 SuperMario=ITA=

SuperMario=ITA=

    Lo scemo del forum

  • Moderatori
  • 96.852 Messaggi:

Inviato 29 novembre 2011 - 10:32

cioè, alla fine voglio che mi crea una variabile con un nome che non gli inserisco io, ma glielo inserisce un contatore.

vabè, per ora ho arrayato. Se è possibile farlo come sopra, è meglio però. Meno sbattimento.
TghXItr.gif - Amare la Formattazione è la Soluzione al 90% dei Problemi della Vita

#107 yorkeiser

yorkeiser

    Schiavo

  • Membri
  • StellettaStellettaStellettaStellettaStellettaStellettaStellettaStelletta
  • 68.722 Messaggi:

Inviato 29 novembre 2011 - 11:11

Direttamente, come faresti in perl e derivati, non puoi.

Il sole è giallo

Brava Giovanna, brava

E canto please don't let me be misunderstood mentre parcheggio nel parcheggio l'alfasud


#108 SuperMario=ITA=

SuperMario=ITA=

    Lo scemo del forum

  • Moderatori
  • 96.852 Messaggi:

Inviato 29 novembre 2011 - 11:14

ok grazie.

vado di array.
TghXItr.gif - Amare la Formattazione è la Soluzione al 90% dei Problemi della Vita

#109 Guest__*

Guest__*
  • Ospiti

Inviato 29 novembre 2011 - 12:32

cioè, alla fine voglio che mi crea una variabile con un nome che non gli inserisco io, ma glielo inserisce un contatore.

vabè, per ora ho arrayato. Se è possibile farlo come sopra, è meglio però. Meno sbattimento.



...il nome che dai alla variabile nel sorgente non ha nessun valore...perchè vuoi tenerne traccia?...il nome variabile viene usato solo con oggetti swing per richiamare parti dell'interfaccia grafica dinamicamente...

#110 SuperMario=ITA=

SuperMario=ITA=

    Lo scemo del forum

  • Moderatori
  • 96.852 Messaggi:

Inviato 29 novembre 2011 - 13:05

semplicemente per non mandare il mio cervello in fuck nelle prossime parti di programma :whistler:
TghXItr.gif - Amare la Formattazione è la Soluzione al 90% dei Problemi della Vita

#111 SuperMario=ITA=

SuperMario=ITA=

    Lo scemo del forum

  • Moderatori
  • 96.852 Messaggi:

Inviato 01 dicembre 2011 - 11:53

come faccio a creare in una classe una variabile pubblica secondo un parametro che passo?

ovvero: programma principale

int tv;

int[] tv_main_user=new int[tv];

Room room=new Room(tv, tv_main_user);

classe Room:


public int tv;

public int[] tv_main_user=new int[tv];



   Room(int tv, int[] tv_main_user){

   this.tv=tv;

   this.tv_main_user=tv_main_user;

}

cioè devo creare, nella classe Room, un array tv_main_user di tanti elementi quanti il parametro tv, che riceve in ingresso il costruttore. E poi devo riempirlo con tutti gli elementi di tv_main_user, sempre in ingresso al costruttore.
TghXItr.gif - Amare la Formattazione è la Soluzione al 90% dei Problemi della Vita

#112 yorkeiser

yorkeiser

    Schiavo

  • Membri
  • StellettaStellettaStellettaStellettaStellettaStellettaStellettaStelletta
  • 68.722 Messaggi:

Inviato 01 dicembre 2011 - 12:02

Uh? A me sembra che l'hai già fatto.

Il sole è giallo

Brava Giovanna, brava

E canto please don't let me be misunderstood mentre parcheggio nel parcheggio l'alfasud


#113 SuperMario=ITA=

SuperMario=ITA=

    Lo scemo del forum

  • Moderatori
  • 96.852 Messaggi:

Inviato 01 dicembre 2011 - 12:06

Uh? A me sembra che l'hai già fatto.


eh ma funzia?

cioè...il mio dubbio: la classe non crea prima le variabili pubbliche, e poi gli assegna un valore secondo il costruttore? perchè così facendo, quando crea la variabile pubblica con l'array, tv non contiene nulla.

lo so, mi mancano le basi di java...ma essendo praticamente autodidatta è così :better:

halp
TghXItr.gif - Amare la Formattazione è la Soluzione al 90% dei Problemi della Vita

#114 yorkeiser

yorkeiser

    Schiavo

  • Membri
  • StellettaStellettaStellettaStellettaStellettaStellettaStellettaStelletta
  • 68.722 Messaggi:

Inviato 01 dicembre 2011 - 12:21

Ah forse ho capito.

La dichiarazione dell'array (int[] tv_main_user;) va fatta a livello di classe (fuori da metodi e costruttori, perchè vuoi che sia un membro di classe :better: ).
L'inizializzazione tv_main_user=new int[tv] va fatta nel costruttore o in qualche metodo.

Così:

class Room

{

    public int[] tv_main_user;

    

    Room()

    {

        tv_main_user=new int[tv];


EDIT: ma poi scusa, vuoi che la classe room lavori direttamente sull'array del chiamante? In tal caso non ti serve fare tutto sto ambaradan.

dal chiamante: 

new Room(array[])



in Room:



class Room{

    int array[];

    Room(array[])

    {

        this.array=array;

Il sole è giallo

Brava Giovanna, brava

E canto please don't let me be misunderstood mentre parcheggio nel parcheggio l'alfasud


#115 SuperMario=ITA=

SuperMario=ITA=

    Lo scemo del forum

  • Moderatori
  • 96.852 Messaggi:

Inviato 01 dicembre 2011 - 12:51

no non mi serve che lavori sull'array del chiamate, mi serve come "database". Nel senso mi creo degli oggetti di tipo room nel quale salvo tutte le informazioni di quell'oggetto passate col costruttore, che poi userò da altre parti (quindi mi servono pubblici).
TghXItr.gif - Amare la Formattazione è la Soluzione al 90% dei Problemi della Vita

#116 Guest__*

Guest__*
  • Ospiti

Inviato 01 dicembre 2011 - 14:39

...se hai problemi di dimensioni come tutte le donne usa una lista...




ArrayList lista = new ArrayList();

//hai  bisogno di aggiungere un elemento?

lista.add(object);

//quanti oggeti c'ho messo dentro?

int quanti = lista.size();

//vuoi scorrerli?

for(int i=0;i<lista.size();i++)

    lista.get(i);




...oppure usa una HashMap se vuoi un sistema chiave/valore...

#117 p.nightmare

p.nightmare

    Dittatore

  • Amministratori
  • 97.663 Messaggi:

Inviato 01 dicembre 2011 - 15:39

sul pc del collega non aggiorna java, da cosa dipende? :better:
devo collegarlo all'internet?
la tastiera è sporca, può dipendere da quello? :patpat:

No real limits of any kind apply here - not even the sky
è diventato un tutt'uno con lo spazio...
PVoutput


#118 toyo

toyo

    sono triste

  • Donatori di sperma
  • StellettaStellettaStellettaStellettaStellettaStellettaStelletta
  • 44.035 Messaggi:

Inviato 01 dicembre 2011 - 19:47

EDIT: ho risolto tutto scrivendo il post, non serve che ve lo leggiate :megusta:


Allora, il progetto è praticamente finito, restano da sistemare robette ma niente di che, eccetto una cosa.

È un progetto che simula dei protocolli di sicurezza in una rete wireless di sensori sarcazzo, ma alla fine non serve saperlo con quello che devo chiedere.

Provo a spiegare la situazione.

Node: thread, agisce concorrentemente su altri Node, ogni tanto va in wait (quando ha il buffer dei messaggi ricevuti da elaborare vuoto), può essere svegliato da altri node (quando, dopo un inserimento, il buffer ha 1 messaggio), può terminare (this.interrupt) quando finisce l'energia.

Hypervisor: thread, crea n Node (in base a dei parametri di configurazione, di solito 100+) e li fa partire.

CheckAlive: classe interna a Hypervisor, thread, controlla periodicamente che i nodi stiano ancora facendo qualcosa.


In pratica, partito tutto, la simulazione deve terminare per 2 motivi:
- O è stato sgamato un intruso, e fin qua, nessun problema
- O CheckAlive trova che tutti i nodi sono o morti o non hanno più messaggi da elaborare.


Di fatto, funziona tutto benissimo così.

Teoricamente, però (e di sicuro il prof alzerebbe il dubbio) potrebbe succedere che, quando checkalive inizia a scorrere i nodi per controllare lo stato, arriva al ksimo nodo ( k = n/2 per esempio) e li ha trovati tutti in wait (quindi hanno il buffer vuoto) e/o terminati. Supponiamo che abbiano energia infiita, quindi li ha trovati tutti in wait. Quando il for inizia a esaminare il k+1esimo nodo, il k+10 invia un messaggio al k (e quindi lo sveglia) e torna a dormire (aveva solo un messaggio da spedire). Il for continua, arriva a n, e, "secondo lui" li ha trovati tutti in wait e interrompe la simulazione.

Però, sempre in teoria, quel messaggio sta praticamente andando in flooding (con bassissime probabilità potrebbe accadere per come funzionano i protocolli) e ha svegliato un casino di nodi, quindi la simulazione è viva e vegeta.

Soluzioni che mi erano venute in mente:

- mettere il controllo di checkalive dentro un blocco synchronized su un qualche oggetto, e conseguentemente anche l'invio di messaggi dei nodi sempre synchronized su quell'oggetto: funzionerebbe, ma sarebbe una schifezza, andrebbe praticamente sempre un solo nodo alla volta, la simulazione rallenterebbe un casino, una merda insomma.

- Soluzione che è venuta a me e anche ad altra gente: quando un nodo va in wait, subito prima chiama un metodo sincronizzato del supervisore che incrementa (o decrementa) un contatore, quando si sveglia il contrario. Checkalive quindi dovrebbe solo controllare un intero, un'operazione atomica, non ci sarebbero problemi. Idea interessante, molto figa, semplice da implementare.
Non funziona, ne a me né agli altri.
Non riusciamo a capire perché, ma il contatore arriva a valori assurdi (va sottozero o addirittura supera n). Mi fa davvero girare le balle che succeda, anche perché un thread non potrà mai, per esmpio, incrementare due volte di fila o decrementare due volte di fila, in quanto fa incremento-wait-decremento ( o il contrario, non cambia), poi fa le cose che deve fare, e al giro successivo del run fa di nuovo incremento-wait-decremento se ha il buffer vuoto e poi viene riempito, incremento-wait e basta se è vuoto e non viene riempito, nessun incremento/decremento se il buffer non era vuoto. Vi mostro il codice, se ci arrivate, vincete 12 internet.

public void run(){

	hv.wokeUp(id); //nasco

	// faccio cose

	while(alive){ // ci sarebbero altri controlli nel while, ma non sono utili per quello che vi devo chiedere

		synchronized (waitingMessages) { //ottengo il lock sul buffer

			if(waitingMessages.isEmpty()){

				hv.goneSleep(id); //dormo

				waitingMessages.wait();

				hv.wokeUp(id); //mi sveglio (ho ricevuto una notify)

				}

			}

		//ok mi sono svegliato, faccio quello che devo fare

		//

		//cose....

		//

		}

		//se arrivo qua, è perchè !alive, quindi sono morto perché ho finito l'energia, ma voi fregatevene, fate conto che ho infinita energia.

		hv.goneSleep(id);//muoio

		this.interrupt();

	}

ho omesso tutto il codice che non c'entra (inclusi tutti i vari try catch, in ogni caso ho controllato, non entrava mai nel catch)

vi mostro anche gonesleep e wokeup, anche se insomma, non è che ci sia tanto da mostrare

synchronized void wokeUp(Integer id){		

		synchronized (nWorking) {

			nWorking++; 

			System.out.println(id.toString().concat(" - nasco/sveglio, nworking= ").concat(nWorking.toString()));

		}

	}

		

	synchronized void goneSleep(Integer id){

		synchronized (nWorking) {

			nWorking--;

			System.out.println(id.toString().concat(" - muoio/dormo, nworking= ").concat(nWorking.toString()));

		}

	}




W Gesù INIZIALIZZAVO NWORKING A 0 FUORI DAL CICLO DI SIMULAZIONI :oki: :yeah:



ME NE SONO ACCORTO ORA :megusta:




funziona tutto :megusta:

FIRMA FOTTUTAMENTE EDITATA. IL FOTTUTO STAFF.
 

Mai più giorni felici


#119 toyo

toyo

    sono triste

  • Donatori di sperma
  • StellettaStellettaStellettaStellettaStellettaStellettaStelletta
  • 44.035 Messaggi:

Inviato 01 dicembre 2011 - 19:50

ah il doppio sinchronized (sul metodo e su nworking) su gonesleep e wokeup lo avevo messo per disperazione, ora l'ho tolto, non cazziatemi

FIRMA FOTTUTAMENTE EDITATA. IL FOTTUTO STAFF.
 

Mai più giorni felici


#120 trallallero

trallallero

    Schiavo

  • Membri
  • StellettaStellettaStellettaStellettaStellettaStellettaStelletta
  • 16.188 Messaggi:

Inviato 01 dicembre 2011 - 20:32

Il "debug del confessionale" funziona sempre :oki:
Don't worry, faith will come soon, like a recall but,
if you can't wait, just stop thinking at all