|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Aug 2006
Messaggi: 1192
|
[JAVA]stampare un archivio
Ciao!
Sto provando a fare alcuni esercizi sugli archivi, ma non ne vengo ancora fuori con la stampa una volta mi stampa l'archivio vuoto, un'altra mi dà errore..non capisco dove sbaglio, mi dareste una mano per favore?Vi posto uno (dei tanti) esercizi che non mi vengono, la consegna è : Una ditta di pubblicita' raccoglie informazioni sui suoi clienti memorizzando il nome, l'attivita' del cliente e la programmazione della pubblicita': giorno, orario, nome della radio che mandera' in onda il messaggio pubblicitario. Costruire e stampare l'archivio delle programmazioni[..] Io ho fatto questo: 1.classe Cliente Codice:
public class Cliente
{
private String nome;
private String attivita;
private int giornopub;
private int orapub;
private String radiopub;
public Cliente (String n, String a, int g, int o, String r)
{
nome = n;
attivita = a;
giornopub = g;
orapub = o;
radiopub = r;
}
public void setDate(int d)
{
giornopub = d;
}
public void setHour(int h)
{
orapub = h;
}
public void setRadio(String r)
{
radiopub = r;
}
public String getName()
{
return nome;
}
public String getAttivita()
{
return attivita;
}
public int getDate()
{
return giornopub;
}
public int getHour()
{
return orapub;
}
public String getRadio()
{
return radiopub;
}
public String toString()
{
String tmp = "";
tmp = "Il cliente "+ nome+ " che ha un "+attivita+
" verra' pubblicizzato il "+giornopub+" alle " +orapub+
" sulla radio " +radiopub;
return tmp;
}
}
Codice:
import java.io.*;
import java.util.*;
public class ArchivioPubblicita
{
private class Coppia implements Comparable
{
String chiave;
Cliente attributo;
public Coppia(String n, Cliente c)
{
chiave = n;
attributo = c;
}
public int compareTo(Object o)
{
Coppia other = (Coppia) o;
if (this.chiave.compareTo(other.chiave)==0)
return 0;
else if (this.chiave.compareTo(other.chiave)<0)
return -1;
else
return 1;
}
}
private Coppia[] archivio;
private int dim;
public ArchivioPubblicita()
{
archivio = new Coppia[1];
dim = 0;
}
public boolean isEmpty()
{
if (dim == 0)
return true;
else
return false;
}
public void addCliente(String n, String a, int g, int o, String r)
{
Cliente cliente = new Cliente(n, a, g, o, r);
Coppia target = new Coppia (n, cliente);
if(!isEmpty())
{
int i = 0;
boolean trovato = false;
while (i<dim && !trovato)
{
if (archivio[i].compareTo(target)==0)
trovato = true;
else
i++;
}
if (!trovato)
{
if (dim == archivio.length)
{
Coppia[] tmp = new Coppia[archivio.length * 2];
for (int k = 0; k<dim; k++)
tmp[k] = archivio[k];
archivio = tmp;
}
archivio[dim]=target;
dim++;
}
}
}
public Cliente trovaCliente(String n)
throws NoSuchElementException
{
Coppia target = new Coppia (n, null);
int i = 0;
boolean trovato = false;
while (i<dim && !trovato)
{
if (archivio[i].compareTo(target)==0)
trovato = true;
else
i++;
}
if (!trovato)
throw new NoSuchElementException();
else
return archivio[i].attributo;
}
public void cancellaCliente(String n)
throws NoSuchElementException
{
if (!isEmpty())
{
Coppia target = new Coppia (n, null);
int i = 0;
boolean trovato = false;
while (i<dim && !trovato)
{
if (archivio[i].compareTo(target)==0)
trovato = true;
else
i++;
}
if (!trovato)
throw new NoSuchElementException();
else
archivio[i] = archivio[dim-1];
dim--;
}
}
public String toString()
{
String tmp = "";
for (int i = 0; i<dim; i++)
tmp = "cliente n. "+ (i+1) + archivio[i].attributo + "\n";
return tmp;
}
}
Codice:
import java.util.*;
import java.io.*;
public class ProvaArchivioPubblicita
{
public static void main (String[] args)
{
ArchivioPubblicita archivio = new ArchivioPubblicita();
Scanner in = new Scanner(System.in);
String line = null;
while (in.hasNextLine())
{
line= in.nextLine();
StringTokenizer st = new StringTokenizer(line, ":\n");
while(st.hasMoreTokens())
{
String nome = st.nextToken();
String attivita = st.nextToken();
int giornopub = Integer.parseInt(st.nextToken());
int orapub= Integer.parseInt(st.nextToken());
String radiopub= st.nextToken();
archivio.addCliente(nome, attivita, giornopub, orapub, radiopub);
}
}
System.out.println ("nell'archivio ci sono i seguenti clienti");
System.out.println(archivio);
}
}
)Codice:
carlo:negozio_cani_e_gatti:121007:1830:radio105 mario:pasticceria:151209:1240:rds claudio:discoteca:130608:1530:radiopiterpan giorgio:computerdiscount:180906:1218:radioitalia Codice:
C:\XXX\xxx\Desktop\Java>java ProvaArchivioPubblicita < clienti.dat C:\XXX\xxx\Desktop\Java> se qualcuno mi aiutasse gentilmente a capire dove sta l'errore, gliene sarei grata
__________________
blue_blue: nickname proprio di persona, femminile, singolare "Wait, before you close the curtain/There’s still another game to play/And life is beautiful that way"(Beautiful that way, Noa & Nicola Piovani) Fiore, sei un mito
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Aug 2006
Messaggi: 1192
|
forse è leggermente pallosa sta roba, posso capirvi
ho solo aggiunto alla classe Cliente il compareTo e ho modificato il compareTo della classe Coppia (ma non credo fosse lì il problema), e poi ho cambiato questo toString da così Codice:
public String toString()
{
String tmp = "";
for (int i = 0; i<dim; i++)
tmp = "cliente n. "+ (i+1) + archivio[i].attributo + "\n";
return tmp;
}
Codice:
public String toString()
{
String tmp = "";
for (int i = 0; i<dim; i++)
tmp = tmp + "cliente n. "+ (i+1) + archivio[i].attributo + "\n";
return tmp;
}
comunque neanche questo spiega perchè prima non mi eseguisse giusto, no? qualche idea? poi volevo chiedervi anche un'altra cosa: è possibile che io compili una volta e il programma non funzioni ma, se sposto tutti i file in un'altra cartella e ricompilo da lì, magicamente compili ed esegua bene?? cioè 'sta cosa mi pare strana, ma è un paio di volte che mi succede..
__________________
blue_blue: nickname proprio di persona, femminile, singolare "Wait, before you close the curtain/There’s still another game to play/And life is beautiful that way"(Beautiful that way, Noa & Nicola Piovani) Fiore, sei un mito
|
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
|
Quote:
così funziona perchè "appendi" (concatenazione di stringhe) a tmp tutti gli oggetti...
__________________
My gaming placement |
|
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Aug 2006
Messaggi: 1192
|
Quote:
__________________
blue_blue: nickname proprio di persona, femminile, singolare "Wait, before you close the curtain/There’s still another game to play/And life is beautiful that way"(Beautiful that way, Noa & Nicola Piovani) Fiore, sei un mito
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:50.










una volta mi stampa l'archivio vuoto, un'altra mi dà errore..non capisco dove sbaglio, mi dareste una mano per favore?
)










