Leggi il Topic


Indice del forumMotobarForum Internet & Hi-Tech

   

Pagina 1 di 2
Vai a pagina 12  Successivo
 
Piccolo aiuto per programma java [matrici e array]
13937560
13937560 Inviato: 19 Nov 2012 9:38
Oggetto: Piccolo aiuto per programma java [matrici e array]
 

Salve a tutti!!!! Dunque... Ho un problema. eusa_shifty.gif eusa_shifty.gif

Ho un metodo statico che richiede in ingresso una matrice di String (String[][]).
Questa matrice di stringhe però non è altro che un array di array. In un esercizio precedente dovevo creare una classe Televisore che era un array di stazioni (1, rai 1; 2 rai 2 e così via).

Adesso, creando un array di Televisore (Televisore[]), dovrebbe uscirmi fuori una matrice di Stringhe, ma non va.

Sapete come si possa fare?
Ecco le 3 classi collegate:

Televisore: Link a pagina di Pastebin.com
StazioniSintonizzate (il metodo con la matrice): Link a pagina di Pastebin.com
main (che non va): Link a pagina di Pastebin.com

Grazie a chi potrà aiutarmi!!! 0510_abbraccio.gif 0510_abbraccio.gif 0510_abbraccio.gif
 
13937605
13937605 Inviato: 19 Nov 2012 10:03
 

Consiglio coomenta il codice cosi la gente ci mette meno tempo per capire cosa vuoi fare

anche se il codice è banale 0509_up.gif 0509_up.gif 0509_up.gif 0509_up.gif 0509_up.gif 0509_up.gif
 
13937608
13937608 Inviato: 19 Nov 2012 10:04
 

non è sbagliato qua

for(int i = 0; i < t.length; i++) { // ????
 
13937610
13937610 Inviato: 19 Nov 2012 10:07
 

topo ha scritto:
non è sbagliato qua

for(int i = 0; i < t.length; i++) { // ????


Non so... Comunque facendo qualche prova ho notato che se creo una variabile Televisore, non la riconosce come array. icon_eek.gif 0510_help.gif
 
13937613
13937613 Inviato: 19 Nov 2012 10:09
 

Allora potrebbe essere sbagliato quando vai

public static void main(String[] args) {

int dim = Integer.parseInt(JOptionPane.showInputDialog("Quanti televisori vuoi creare?"));

Televisore[] t = new Televisore[dim];

String [][] s;

t = s;

String stazione = JOptionPane.showInputDialog("Quale stazione vuoi cercare?");

StazioniSintonizzate.quanteStazioni(s, stazione);

}

t=s stai associando un array con una matrice mi sa che non puoi farlo
per fare cosi dovresti mettere la posizione
t[0]=s
cosi facendo dentro all'array t nella posizione 0 hai dentro la matrice

il problema dovrebbe essere li


p.s. non mi ricordo se in java gli array partono da zero o da 1
 
13937616
13937616 Inviato: 19 Nov 2012 10:10
 

topo ha scritto:
Allora potrebbe essere sbagliato quando vai

public static void main(String[] args) {

int dim = Integer.parseInt(JOptionPane.showInputDialog("Quanti televisori vuoi creare?"));

Televisore[] t = new Televisore[dim];

String [][] s;

t = s;

String stazione = JOptionPane.showInputDialog("Quale stazione vuoi cercare?");

StazioniSintonizzate.quanteStazioni(s, stazione);

}

t=s stai associando un array con una matrice mi sa che non puoi farlo
per fare cosi dovresti mettere la posizione
t[0]=s
cosi facendo dentro all'array t nella posizione 0 hai dentro la matrice

il problema dovrebbe essere li


p.s. non mi ricordo se in java gli array partono da zero o da 1


Partono da 0, quindi ci metto 0. Provo subito. 0509_banana.gif
 
13937656
13937656 Inviato: 19 Nov 2012 10:28
 

No, non va. Perché non si può associare una variabile Televisore ad una matrice di Stringhe. eusa_wall.gif eusa_wall.gif
 
13937922
13937922 Inviato: 19 Nov 2012 12:28
 

ahhh
ma te hai messo dentro ad un array di TELEVISORI una matrice di stringhe
cosi facendo non hai l'uniformità di informazioni
In certi linguaggi puoi anche mettere all'interno di array informazioni diverse

Non ti conviene usare le Liste siccome Array sono fissi (anche li si possono fare a dimensione variabili con dei trucchetti ma se cadi nei casi peggiori vanno a dnneggiare le performance)



p.s
Dividi il codice in
CAMPI
COSTRUTTORE
METODI
cosi è più leggibile

Pii perchè hai creato una classe StazioniSintonizzate ??? non potevi fare un metodo dentro alla classe Televisori
In più la classe StazioniSintonizzate non ha costruttore quindi Java ne crea uno lei in automatico ma non è una bella cosa
a questo punto conviene sempre mettere un costruttore anche vuoto almeno sei sicuro che non crei cavolate

p.p.s Metti i COMMENTI PLEASE icon_wink.gif icon_wink.gif icon_wink.gif icon_wink.gif
 
13937932
13937932 Inviato: 19 Nov 2012 12:30
 

topo ha scritto:
ahhh
ma te hai messo dentro ad un array di TELEVISORI una matrice di stringhe
cosi facendo non hai l'uniformità di informazioni




p.s
Dividi il codice in
CAMPI
COSTRUTTORE
METODI
cosi è più leggibile

Pii perchè hai creato una classe StazioniSintonizzate ??? non potevi fare un metodo dentro alla classe Televisori
In più la classe StazioniSintonizzate non ha costruttore quindi Java ne crea uno lei in automatico ma non è una bella cosa
a questo punto conviene sempre mettere un costruttore anche vuoto almeno sei sicuro che non crei cavolate

p.p.s Metti i COMMENTI PLEASE icon_wink.gif icon_wink.gif icon_wink.gif icon_wink.gif


Ho creato una classe a parte perché quello str... del prof così chiedeva. Era così più facile sennò. icon_asd.gif icon_asd.gif Vado di commenti. 0509_up.gif
 
13937955
13937955 Inviato: 19 Nov 2012 12:38
 

Ecco i codici commentati:

classe TV principale: Link a pagina di Pastebin.com
classe StazioniSintonizzate: Link a pagina di Pastebin.com

La terza (il main) è inutile, tanto non va sicuramente bene così com'è.

Come posso risolvere? Il problema è che una qualsiasi variabile TV non è riconosciuta come array, per cui se creo un array di televisori non è riconosciuto come array di array (e quindi matrice).
 
13937961
13937961 Inviato: 19 Nov 2012 12:42
 

ma è inutile creare una classe senza poi utilizzarla

cioè crei un oggetto StazioniSintonizzate che poi non serve a niente -.-
e non istanzi oggetti davvero utili

altro errore è questo


public Televisore() {

int i = Integer.parseInt(JOptionPane.showInputDialog("Quanti canali ha il televisore?"));

//NON SI DEVE FARE MAI... NEL COSTRUTTORE NON CI DEVONO ESSERE INPut :: IN QUESTO CASO LO FAI NEL MAIN E

//POI PASSI AL COSTRUTTORE LA DIMENSIONE

i++;

String[] arr = new String[i];

numcanali = i;

stazioni = arr;
}

Nei costruttore è meglio non mettere Input
in quetso caso fai la richiesta nel Main e poi passi la dimensione
 
13937964
13937964 Inviato: 19 Nov 2012 12:43
 

narkelion ha scritto:
Ecco i codici commentati:

classe TV principale: Link a pagina di Pastebin.com
classe StazioniSintonizzate: Link a pagina di Pastebin.com

La terza (il main) è inutile, tanto non va sicuramente bene così com'è.

Come posso risolvere? Il problema è che una qualsiasi variabile TV non è riconosciuta come array, per cui se creo un array di televisori non è riconosciuto come array di array (e quindi matrice).


serio il sito dove posso modificare il codice 0509_doppio_ok.gif 0509_doppio_ok.gif 0509_doppio_ok.gif
 
13937989
13937989 Inviato: 19 Nov 2012 12:54
 

narkelion ha scritto:
Ecco i codici commentati:

classe TV principale: Link a pagina di Pastebin.com
classe StazioniSintonizzate: Link a pagina di Pastebin.com

La terza (il main) è inutile, tanto non va sicuramente bene così com'è.

Come posso risolvere? Il problema è che una qualsiasi variabile TV non è riconosciuta come array, per cui se creo un array di televisori non è riconosciuto come array di array (e quindi matrice).


Tv Principale Link a pagina di Pastebin.com
 
13938011
13938011 Inviato: 19 Nov 2012 13:03
 
 
13938019
13938019 Inviato: 19 Nov 2012 13:07
Oggetto: Re: Piccolo aiuto per programma java [matrici e array]
 

narkelion ha scritto:
Salve a tutti!!!! Dunque... Ho un problema. eusa_shifty.gif eusa_shifty.gif

Ho un metodo statico che richiede in ingresso una matrice di String (String[][]). OK
Questa matrice di stringhe però non è altro che un array di array. In un esercizio precedente dovevo creare una classe Televisore che era un array di stazioni (1, rai 1; 2 rai 2 e così via). OK

Adesso, creando un array di Televisore (Televisore[]), dovrebbe uscirmi fuori una matrice di Stringhe, ma non va.

Sapete come si possa fare?
Ecco le 3 classi collegate:

Televisore: Link a pagina di Pastebin.com
StazioniSintonizzate (il metodo con la matrice): Link a pagina di Pastebin.com
main (che non va): Link a pagina di Pastebin.com

Grazie a chi potrà aiutarmi!!! 0510_abbraccio.gif 0510_abbraccio.gif 0510_abbraccio.gif



Ma qui te crei un Array TELEVISORI quindi l'oggetto che può contenere questo Array è televisori
fai un campo che è un array di array dentro all'oggetto TELEVISORE
se no non penso ci siano soluzioni icon_eek.gif icon_eek.gif icon_eek.gif icon_eek.gif
 
13938065
13938065 Inviato: 19 Nov 2012 13:30
Oggetto: Re: Piccolo aiuto per programma java [matrici e array]
 

topo ha scritto:



Ma qui te crei un Array TELEVISORI quindi l'oggetto che può contenere questo Array è televisori
fai un campo che è un array di array dentro all'oggetto TELEVISORE
se no non penso ci siano soluzioni icon_eek.gif icon_eek.gif icon_eek.gif icon_eek.gif


È bello tosto, ma forse ce l'ho fatta. Ho modificato le classi così:

TV principale: Link a pagina di Pastebin.com
StazioniSintonizzate: Link a pagina di Pastebin.com
ClienteTelevisore: Link a pagina di Pastebin.com

ma non va lo stesso... Mi da un arrayoutofbound error. Ma non so perché. eusa_wall.gif eusa_wall.gif
 
13938127
13938127 Inviato: 19 Nov 2012 13:51
 

arraybound exception lo dà perchè leggi fuori dall'array o nn c'è niente nelle caselle dell'array
Il probelma che non ho la consegna che ti ha dato


allora partiamo dal primo link

String[] arr = new String[i];

numcanali = i;

stazioni = arr;

deve diventare
stazioni=new String [i];

arr è un interno campo inutile


for(int i = 1; i < numcanali; i++) perchè il for lo fai partire da 1
la posizione 0 non la utilizzi ????????????

forse perchè non sai stampare 1 al posto dello zero basta che fai i+1 non modifichi il parametro siccome è solo un operazione aritmetica cosi poii nell'output successivo stampi 1 al posto dello zero e cosi via


Secondo link la i parte da 0 ma trova NULL nell'array ...

quindi ti fà l'errore basta che metti la i al for del primo link e funziona o dovrebbe funzionare



prova a modificare queste due cose .... ah e metti tutto il codice errore che ti dice pure dove si possono trovare gli errori
 
13938143
13938143 Inviato: 19 Nov 2012 13:56
 

topo ha scritto:
arraybound exception lo dà perchè leggi fuori dall'array o nn c'è niente nelle caselle dell'array
Il probelma che non ho la consegna che ti ha dato


allora partiamo dal primo link

String[] arr = new String[i];

numcanali = i;

stazioni = arr;

deve diventare
stazioni=new String [i];

arr è un interno campo inutile


for(int i = 1; i < numcanali; i++) perchè il for lo fai partire da 1
la posizione 0 non la utilizzi ????????????

forse perchè non sai stampare 1 al posto dello zero basta che fai i+1 non modifichi il parametro siccome è solo un operazione aritmetica cosi poii nell'output successivo stampi 1 al posto dello zero e cosi via


Secondo link la i parte da 0 ma trova NULL nell'array ...

quindi ti fà l'errore basta che metti la i al for del primo link e funziona o dovrebbe funzionare



prova a modificare queste due cose .... ah e metti tutto il codice errore che ti dice pure dove si possono trovare gli errori


La posizione 0 l'ho saltata perché un tv non ha il canale 0. Infatti ho anche un + 1. Praticamente aggiungo 1 punto alla fine e ne levo uno all'inizio. Se infatti dico che i canali devono essere 20, invece di essere dallo 0 al 19, sono dall'1 al 20.

la consegna è questa:

Esercizio 2.1: Si realizzi una classe Televisore per gestire informazioni relative ai televisori. Ciascun oggetto della classe rappresenta un televisore, e per ciascun televisore, le informazioni rilevanti riguardano il numero di canali di cui dispone (ad esempio dal numero 1 al numero 49), e le stazioni (ad esempio, "Rai Tre") su cui i vari canali vengono sintonizzati. Equipaggiare la classe con im seguenti metodi pubblici:
un costruttore che, dato un intero c, crei un oggetto di tipo Televisore con c canali, ai quali non e' associata alcuna stazione.
quantiCanali, che restituisce il numero di canali di cui dispone un televisore
associa, che dati una stazione s ed un canale c, associa al canale c del televisore la stazione s
qualeStazione che dato un intero c, restituisce la stazione associata al canale c del televisore se esiste e restituisca la stringa "stazione inesistente" altrimenti.

Esercizio 2.2: Realizzare una classe StazioniSintonizzate, che includa un metodo statico quanteStazioni che, preso in ingresso un array di televisori e una stazione, restituisce il numero di televisori che hanno quella stazione.

Esercizio 2.3: Realizzare una classe cliente delle classi precedenti avente un metodo main che legga da tastiera il numero canali di 4 di televisori, crei i relativi oggetti e associ loro alcune stazioni lette da tastiera. Infine, si legga un'altra stazione da tastiera e si stampi il numero di televisori che sono sintonizzati su quella stazione.
 
13938206
13938206 Inviato: 19 Nov 2012 14:12
 

eh ma la vai ad estrarre la posizione 0

allora devi mettere i =1 su tutti
è li il problema


ma alla fine non ti cambia niente fare 0 19 o 1 e 20

anzi dovresti mettere nun di pos <= num di canali cosi comprendi anche il 20 esimo canale

0509_up.gif 0509_up.gif 0509_up.gif
che poi non esiste il canale zero è un astrazione siccome basta nel momento della ricerca decrementare o incrementare i e si risolve il problema e utilizzi tutte le posizione
ma questa è solo finezza

prova con la i 0509_up.gif
 
13938385
13938385 Inviato: 19 Nov 2012 14:59
 

narkelion ha scritto:


La posizione 0 l'ho saltata perché un tv non ha il canale 0. Infatti ho anche un + 1. Praticamente aggiungo 1 punto alla fine e ne levo uno all'inizio. Se infatti dico che i canali devono essere 20, invece di essere dallo 0 al 19, sono dall'1 al 20.

la consegna è questa:

Esercizio 2.1: Si realizzi una classe Televisore per gestire informazioni relative ai televisori. Ciascun oggetto della classe rappresenta un televisore, e per ciascun televisore, le informazioni rilevanti riguardano il numero di canali di cui dispone (ad esempio dal numero 1 al numero 49), e le stazioni (ad esempio, "Rai Tre") su cui i vari canali vengono sintonizzati. Equipaggiare la classe con im seguenti metodi pubblici:
un costruttore che, dato un intero c, crei un oggetto di tipo Televisore con c canali, ai quali non e' associata alcuna stazione.
quantiCanali, che restituisce il numero di canali di cui dispone un televisore
associa, che dati una stazione s ed un canale c, associa al canale c del televisore la stazione s
qualeStazione che dato un intero c, restituisce la stazione associata al canale c del televisore se esiste e restituisca la stringa "stazione inesistente" altrimenti.

Esercizio 2.2: Realizzare una classe StazioniSintonizzate, che includa un metodo statico quanteStazioni che, preso in ingresso un array di televisori e una stazione, restituisce il numero di televisori che hanno quella stazione.

Esercizio 2.3: Realizzare una classe cliente delle classi precedenti avente un metodo main che legga da tastiera il numero canali di 4 di televisori, crei i relativi oggetti e associ loro alcune stazioni lette da tastiera. Infine, si legga un'altra stazione da tastiera e si stampi il numero di televisori che sono sintonizzati su quella stazione.



Allura non serve nessuna matrice ... cosa ti serve la matrice eusa_think.gif eusa_think.gif eusa_think.gif eusa_think.gif

costruttore va bene quello che ho fatto
associa dai la posizione e mette dentro una stringa quindi ti serve semplicemente un array di stringhe dentro.

esercizio 2.2 passi un array con dentro televisioni e un array di stringhe cond entro le stazioni
e restituisce un numero

e poi il main sono solo chiamate alla funzione

come lo hai fatto è sbagliato , non serve nessuna matrice ma si lavora sugli array 0509_up.gif 0509_up.gif 0509_up.gif 0509_up.gif


se vuoi aggiungimi su faccia cosi se hai qualche dubbio ti rispondo subito


l'esercizio per se non è difficile sono propio le basi 0509_up.gif 0509_up.gif 0509_up.gif 0509_up.gif 0509_up.gif 0510_saluto.gif 0510_saluto.gif 0510_saluto.gif
 
13938519
13938519 Inviato: 19 Nov 2012 15:42
 

topo ha scritto:



Allura non serve nessuna matrice ... cosa ti serve la matrice eusa_think.gif eusa_think.gif eusa_think.gif eusa_think.gif

costruttore va bene quello che ho fatto
associa dai la posizione e mette dentro una stringa quindi ti serve semplicemente un array di stringhe dentro.

esercizio 2.2 passi un array con dentro televisioni e un array di stringhe cond entro le stazioni
e restituisce un numero

e poi il main sono solo chiamate alla funzione

come lo hai fatto è sbagliato , non serve nessuna matrice ma si lavora sugli array 0509_up.gif 0509_up.gif 0509_up.gif 0509_up.gif


se vuoi aggiungimi su faccia cosi se hai qualche dubbio ti rispondo subito


l'esercizio per se non è difficile sono propio le basi 0509_up.gif 0509_up.gif 0509_up.gif 0509_up.gif 0509_up.gif 0510_saluto.gif 0510_saluto.gif 0510_saluto.gif


Le matrici in teoria non servono, e l'avevo capito, ma un array di televisori (che è un array a sua volta), diventa un array di array.... E quindi una matrice. O no? eusa_think.gif
 
13938597
13938597 Inviato: 19 Nov 2012 16:09
 

narkelion ha scritto:


Le matrici in teoria non servono, e l'avevo capito, ma un array di televisori (che è un array a sua volta), diventa un array di array.... E quindi una matrice. O no? eusa_think.gif



non hai ancora chiaro gli oggetti e il contenuto

Televisore è un Oggetto
Televisore s è un istanza di un oggetto televisore

quando crei Televisonre [] s crei un array di televisori quindi dentro hai istanze di televisioni

Istanza di televisioni ha dentro i campi che sono stati specificati nel costruttore
dentro ad un campo avrai un array
ma l'ho hai dichiarato privato quindi non puoi accedere esternamente ma solo internemante alla classe
per accedere esternamente devi avere dei metodi per l'estrazione e l'inserimento dei dati 0509_up.gif
 
13938930
13938930 Inviato: 19 Nov 2012 18:06
 

quoto, televisore è una classe che ha tra gli attributi delle stringhe, quando tu istanzi un array di televisore crei degli oggetti che hanno comunque delle stringhe al loro interno, ma questo non rende una singola istanza di televisore un array. per di più come dice topo l' array è private
 
13939188
13939188 Inviato: 19 Nov 2012 19:20
 

cuzzo94 ha scritto:
quoto, televisore è una classe che ha tra gli attributi delle stringhe, quando tu istanzi un array di televisore crei degli oggetti che hanno comunque delle stringhe al loro interno, ma questo non rende una singola istanza di televisore un array. per di più come dice topo l' array è private


Ok, perfetto. Resta solo da capire, ora che tutto si compila e gira, perché alla fine va in errore.

ArrayOutOfBoundException: 2 (un numero che avevo inserito come numero di televisori)
l'erorre sta alla riga 10 di StazioniSintonizzate (.quantestazioni) e alla riga 20 del main. eusa_wall.gif
 
13939503
13939503 Inviato: 19 Nov 2012 20:51
 

pubblica il codice finale

ArrayOutOfBoundException --> indica che stai usando degli indici al di fuori del for
controlla le {}
e mettile a tutti i for
 
13939505
13939505 Inviato: 19 Nov 2012 20:53
 

Il codice di errore sta qui:

Link a pagina di Pastebin.com

Alla riga 10. Esce dal for con quel t[i].quantiCanali(). Ho anche provato ad aggiungere un +1, ma non cambia nulla.
 
13939524
13939524 Inviato: 19 Nov 2012 20:59
 

narkelion ha scritto:
Il codice di errore sta qui:

Link a pagina di Pastebin.com

Alla riga 10. Esce dal for con quel t[i].quantiCanali(). Ho anche provato ad aggiungere un +1, ma non cambia nulla.


mi sa che hai sbagliato nel secondo for

for(int i = 0; i < t.length; i++) { // primo ciclo, legge le righe

for(int j = 0; j < t[i].quantiCanali(); j++) { //secondo for, per ogni riga legge

//le colonne

if (t[j].qualeStazione().equals(stazione)) {

num++; } //se tutto va bene, la condizione è giusta e dovrebbe

//aumentare il contatore se trova 2 stazioni uguali

}


dovrebbe funzionare perchè se no facevi due i++ e non usavi mai j quindi non scorrevi le colonne
0510_saluto.gif

p.s. non ti vedo mai connesso
 
13939534
13939534 Inviato: 19 Nov 2012 21:03
 

Orca t***a era j++!!! Grande topo!!!

Connesso dove? icon_eek.gif
 
13939542
13939542 Inviato: 19 Nov 2012 21:05
 

Ora funziona. Vado però a fare una prova, e dando come stazioni di tv di un solo canale rai 1, mi dice che è ripetuto 0 volte.

Nonostante lo sia 2. eusa_think.gif
 
13939582
13939582 Inviato: 19 Nov 2012 21:15
 

al tinga il pallino è sempre grigio

qui hai messi al posto di t[i].qualeStazione().equals
t[j].qualeStazione().equals

perchè potrebbe essere per questo


prova e fammi sapere
0510_saluto.gif
 
Mostra prima i messaggi di:





Pagina 1 di 2
Vai a pagina 12  Successivo

Non puoi inserire nuovi Topic
Non puoi rispondere ai Topic
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi
 
Indice del forumMotobarForum Internet & Hi-Tech

Forums ©