Esercizio Java pareri

Robert T.

Utente Attivo
134
11
Grazie per i consigli ma purtroppo il codice che mi avete dato non funziona e pensandoci oltre a quello vi è un problema con il tasto break. Se vi sono altre persone che si chiamano robert, il programma si fermerà alla prima persona. Cerco di leggermi i comandi di arraylist per vedere se trovo qualcosa di utile.
 

Egerfaust

Utente Attivo
454
55
CPU
i5-750 @3.35 GHz vcore 1.136
Scheda Madre
Gigabyte p55a-ud3 rev1
HDD
1TB WD Caviar Green
RAM
4x2gb Corsair xms3 1600MHz cl9
GPU
Gigabyte 6950 OC 1GB
Audio
Integrata
Monitor
Asus vw228n
PSU
750W
Case
AeroCool vx-e pro
OS
w7, ubuntu 10.10
Non ho letto tutta la discussione, ma al 100% quel ciclo si ferma al primo match che trova, proprio perchè c'è l'istruzione break.
 

Robert T.

Utente Attivo
134
11
@DispatchCode @1nd33d @BAT00cent

Ho risolto cosi:


Codice:
	boolean check = false;;
		for (Item item : voce) {
		    if(item.getNome().equals(chiave)){
		        System.out.println(item.toString());
		        check = true;
		    }
		}


		if (!check) {
		     System.out.println("Nessun match");
		}

Oltre ad accorgimenti come il toString che ho risolto, ora mi stampa staccato. Dite che possa andar bene?
 

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,223
1,853
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
Grazie per i consigli ma purtroppo il codice che mi avete dato non funziona e pensandoci oltre a quello vi è un problema con il tasto break. Se vi sono altre persone che si chiamano robert, il programma si fermerà alla prima persona. Cerco di leggermi i comandi di arraylist per vedere se trovo qualcosa di utile.

Non mi sembrava fosse specificato il fatto che si dovesse continuare l'iterazione anche al seugito di un match.
In questo caso è sufficiente togliere il break al mio codice, come ha fatto notare Egerfaust.

Ps. mi permetto anche di suggerirti di definire le cose con nomi più accurati :) "tasto break"... è un'istruzione. I "comandi di arraylist", sono metodi.

- - - Updated - - -

Mostra l'intero codice al seguito delle modifiche, così vediamo il quadro completo.
 

Robert T.

Utente Attivo
134
11
Non mi sembrava fosse specificato il fatto che si dovesse continuare l'iterazione anche al seugito di un match.
In questo caso è sufficiente togliere il break al mio codice, come ha fatto notare Egerfaust.


Ps. mi permetto anche di suggerirti di definire le cose con nomi più accurati :) "tasto break"... è un'istruzione. I "comandi di arraylist", sono metodi.

- - - Updated - - -

Mostra l'intero codice al seguito delle modifiche, così vediamo il quadro completo.


Oddio sinceramente non mi ero accorto di aver scritto tasto :lol:. Comunque la cosa del break, è una cosa logica a cui non ci avevo fatto caso.
Comunque il seguente codice che hai postato a me non funzionava con e senza il break.

int i = 0;
while(i++ < rubrica.size()) {
if(rubrica.get(i).getNome().equals(chiave)) {
System.out.println(rubrica.get(i));
break;
}
}

if(i == rubrica.size()-1) {
System.out.println("Nessun match");
}


Ecco il codice, ho solo un dubbio in merito, a impostare l'arraylist fuori dal main e a come chiamarlo nel main.

INCAPSULAMENTO:

Codice:
public class Item {
    private String nome,indirizzo,cellulare;
        
    public Item(String nome, String indirizzo, String cellulare){
        this.nome = nome;
        this.indirizzo = indirizzo;
        this.cellulare = cellulare;
        
    }
    
    public String toString(){
        return "nome:" + this.getNome() + "\n indirizzo" + this.getIndirizzo() + "\n Nr. Cellulare:" + this.getCellulare() + "\n \n";
    }


    public String getNome() {
        if(!this.nome.isEmpty()){
            return this.nome;
        }
        else{
            return "Sconosciuto";
        }
    }


    public void setNome(String nome) {
        this.nome = nome;
    }


    public String getIndirizzo() {
        if(!this.indirizzo.isEmpty()){
            return this.indirizzo;
        }
        else {
            return "Sconosciuto";
        }
    }


    public void setIndirizzo(String indirizzo) {
        this.indirizzo = indirizzo;
    }


    public String getCellulare() {
        if(!this.cellulare.isEmpty()){
            return this.cellulare;
        }
        else {
            return "Sconosciuto";
        }
    }


    public void setCellulare(String cellulare) {
        this.cellulare = cellulare;
    }
}

MAIN:

Codice:
import java.util.*;






public class Rubrica {
    public static void main(String[] args) {
        
        
        ArrayList<Item> voce = new ArrayList<Item>();
        
        voce.add(new Item("Robert", "Via qualcosa", "123"));
        voce.add(new Item("Roberto","Via qualcosina", "123"));
        voce.add(new Item("Robert", "Via qual ", "2222"));
        
        Scanner input = new Scanner(System.in);
        System.out.println("chi cerchi?");
        String chiave = input.nextLine();
        
        boolean check = false;;
        for (Item item : voce) {
            if(item.getNome().equals(chiave)){
                System.out.println(item.toString());
                check = true;
            }
        }


        if (!check) {
             System.out.println("Nessun match");
        }
        
        
    input.close();


    }
}
 

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,223
1,853
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
Non l'avevo provato quel codice, l'ho scritto qui. Ad occhio ho commesso l'errore sull'if, non avrei dovuto sottrarre 1.

Tutte le mie considerazioni relative espresse nei precedenti post rimangono (come i getter ed il gestire l'aggiunta degli Item in quell'altro modo, dove sarebbe stato corretto fornire un metodo per ottenere il nominativo cercato con i relativi dati magari).

Visto che ci hai provato, ho scritto due righe di esempio.

Item.java
Codice:
class Item 
{
  private String nome, indirizzo, telefono;
  
  
  Item(String nome, String indirizzo, String telefono) 
  {
    this.nome      = nome;
    this.indirizzo = indirizzo;
    this.telefono  = telefono;
  }
  
  
  
  /* setter */
  void setNome(String nome) 
  {
    this.nome = nome;
  }
  
  void setIndirizzo(String indirizzo) 
  {
    this.indirizzo = indirizzo;
  }
  
  void setTelefono(String telefono) 
  {
    this.telefono = telefono;
  }
  
  /* getter */
  
  String getNome() 
  {
    return nome;
  }
  
  String getIndirizzo() 
  {
    return indirizzo;
  }
  
  String getTelefono() 
  {
    return telefono;
  }
  
  
  [MENTION=75845]Override[/MENTION]
  public String toString() 
  {
    return "Nome: "+nome+"\nIndirizzo: "+indirizzo+"\nTelefono: "+telefono;
  }

}


Rubrica.java
Codice:
import java.util.ArrayList;

class Rubrica 
{
  private ArrayList<Item> elencoNominativi;
  
  
  Rubrica() 
  {
    elencoNominativi = new ArrayList<Item>();
  }
  
  Rubrica(ArrayList<Item> elencoNominativi) 
  {
    this.elencoNominativi = elencoNominativi;
  }
  
  
  
  boolean aggiungiItem(Item item) 
  {
    // Verifica l'univocita'
    // Se non ti serve rimuovi il controllo e rendi il metodo void
    if(containsPhone(item)) return false;
    elencoNominativi.add(item);
    
    return true;
  }
  
  
  Item getItem(String name) 
  {
    for(Item item : elencoNominativi) 
    {
      if(item.getNome().equals(name)) return item;
    }
    
    return null;
  }
  
  
  private boolean containsPhone(Item item) 
  {
    for(Item ii : elencoNominativi) 
    {
      if(item.getTelefono().equals(ii.getTelefono())) return true; 
    }
    
    return false;
  }

  
  
  /*
    
     Eventuali altri metodi, come un getRubrica()
  
   */
  

  [MENTION=75845]Override[/MENTION]
  public String toString() 
  {
    StringBuilder sb = new StringBuilder();
    
    for(Item item : elencoNominativi) 
    {
      sb.append(item);
      sb.append("\n");
    }
    
    return sb.toString();
  }  
  
}


Main.java, con controlli sugli inserimenti non avvenuti
Codice:
import java.util.Scanner;
import java.util.NoSuchElementException;


class Main 
{
  public static void main(String[] args) 
  {
    Scanner input = new Scanner(System.in);
    
    // Creo una rubrica inizialmente vuota
    Rubrica rubrica = new Rubrica();
    
    // Creo 3 Item
    Item item1 = new Item("Roberto", "Via qualcosa", "123456789");
    Item item2 = new Item("Robert", "via qualcosa", "987654321");
    Item item3 = new Item("Robertino", "via qualcosa", "8873662233");
    Item item4 = new Item("Rob", "via qualcosa", "123456789");
    
    if(!rubrica.aggiungiItem(item1)) 
    {
      System.out.println(item1+"\n\tNon aggiunto!");
    }
    
    if(!rubrica.aggiungiItem(item2)) 
    {
      System.out.println(item2+"\n\tNon aggiunto!");
    }
    
    if(!rubrica.aggiungiItem(item3)) 
    {
      System.out.println(item3+"\n\tNon aggiunto!");
    }
    
    if(!rubrica.aggiungiItem(item4)) 
    {
      System.out.println(item4+"\n\tNon aggiunto!");
    }
    
    /* Nome da cercare e ricerca */
    
    System.out.println("\nNominativo da cercare: ");
    String nome = "";

    try 
    {
      nome = input.nextLine();
    } catch(NoSuchElementException ex) 
    {
      ex.printStackTrace();
    }
    
    Item item = rubrica.getItem(nome);
    
    if(item == null) 
    {
      System.out.println("Nominativo non esistente!");
    } else 
    {
      System.out.println(item);
    }
    
  }
}


Main1.java, senza i controlli sui mancati inserimenti
Codice:
import java.util.Scanner;
import java.util.NoSuchElementException;


class Main1 
{
  public static void main(String[] args) 
  {
    Scanner input = new Scanner(System.in);
    
    // Creo una rubrica inizialmente vuota
    Rubrica rubrica = new Rubrica();
    
    // Creo 3 Item
    Item item1 = new Item("Roberto", "Via qualcosa", "123456789");
    Item item2 = new Item("Robert", "via qualcosa", "987654321");
    Item item3 = new Item("Robertino", "via qualcosa", "8873662233");
    Item item4 = new Item("Rob", "via qualcosa", "123456789");
    
    rubrica.aggiungiItem(item1);
    rubrica.aggiungiItem(item2);
    rubrica.aggiungiItem(item3); 
    rubrica.aggiungiItem(item4);
    
    /* Nome da cercare e ricerca */
    
    System.out.println("\nNominativo da cercare: ");
    String nome = "";

    try 
    {
      nome = input.nextLine();
    } catch(NoSuchElementException ex) 
    {
      ex.printStackTrace();
    }
    
    Item item = rubrica.getItem(nome);
    
    if(item == null) 
    {
      System.out.println("Nominativo non esistente!");
    } else 
    {
      System.out.println(item);
    }
    
  }
}
 
  • Mi piace
Reazioni: Robert T.

Robert T.

Utente Attivo
134
11
Non l'avevo provato quel codice, l'ho scritto qui. Ad occhio ho commesso l'errore sull'if, non avrei dovuto sottrarre 1.

Tutte le mie considerazioni relative espresse nei precedenti post rimangono (come i getter ed il gestire l'aggiunta degli Item in quell'altro modo, dove sarebbe stato corretto fornire un metodo per ottenere il nominativo cercato con i relativi dati magari).

Visto che ci hai provato, ho scritto due righe di esempio.

Item.java
Codice:
class Item 
{
  private String nome, indirizzo, telefono;
  
  
  Item(String nome, String indirizzo, String telefono) 
  {
    this.nome      = nome;
    this.indirizzo = indirizzo;
    this.telefono  = telefono;
  }
  
  
  
  /* setter */
  void setNome(String nome) 
  {
    this.nome = nome;
  }
  
  void setIndirizzo(String indirizzo) 
  {
    this.indirizzo = indirizzo;
  }
  
  void setTelefono(String telefono) 
  {
    this.telefono = telefono;
  }
  
  /* getter */
  
  String getNome() 
  {
    return nome;
  }
  
  String getIndirizzo() 
  {
    return indirizzo;
  }
  
  String getTelefono() 
  {
    return telefono;
  }
  
  
  @[URL="http://www.tomshw.it/forum/members/override-75845.html"]Override[/URL]
  public String toString() 
  {
    return "Nome: "+nome+"\nIndirizzo: "+indirizzo+"\nTelefono: "+telefono;
  }

}


Rubrica.java
Codice:
import java.util.ArrayList;

class Rubrica 
{
  private ArrayList<Item> elencoNominativi;
  
  
  Rubrica() 
  {
    elencoNominativi = new ArrayList<Item>();
  }
  
  Rubrica(ArrayList<Item> elencoNominativi) 
  {
    this.elencoNominativi = elencoNominativi;
  }
  
  
  
  boolean aggiungiItem(Item item) 
  {
    // Verifica l'univocita'
    // Se non ti serve rimuovi il controllo e rendi il metodo void
    if(containsPhone(item)) return false;
    elencoNominativi.add(item);
    
    return true;
  }
  
  
  Item getItem(String name) 
  {
    for(Item item : elencoNominativi) 
    {
      if(item.getNome().equals(name)) return item;
    }
    
    return null;
  }
  
  
  private boolean containsPhone(Item item) 
  {
    for(Item ii : elencoNominativi) 
    {
      if(item.getTelefono().equals(ii.getTelefono())) return true; 
    }
    
    return false;
  }

  
  
  /*
    
     Eventuali altri metodi, come un getRubrica()
  
   */
  

  @[URL="http://www.tomshw.it/forum/members/override-75845.html"]Override[/URL]
  public String toString() 
  {
    StringBuilder sb = new StringBuilder();
    
    for(Item item : elencoNominativi) 
    {
      sb.append(item);
      sb.append("\n");
    }
    
    return sb.toString();
  }  
  
}


Main.java, con controlli sugli inserimenti non avvenuti
Codice:
import java.util.Scanner;
import java.util.NoSuchElementException;


class Main 
{
  public static void main(String[] args) 
  {
    Scanner input = new Scanner(System.in);
    
    // Creo una rubrica inizialmente vuota
    Rubrica rubrica = new Rubrica();
    
    // Creo 3 Item
    Item item1 = new Item("Roberto", "Via qualcosa", "123456789");
    Item item2 = new Item("Robert", "via qualcosa", "987654321");
    Item item3 = new Item("Robertino", "via qualcosa", "8873662233");
    Item item4 = new Item("Rob", "via qualcosa", "123456789");
    
    if(!rubrica.aggiungiItem(item1)) 
    {
      System.out.println(item1+"\n\tNon aggiunto!");
    }
    
    if(!rubrica.aggiungiItem(item2)) 
    {
      System.out.println(item2+"\n\tNon aggiunto!");
    }
    
    if(!rubrica.aggiungiItem(item3)) 
    {
      System.out.println(item3+"\n\tNon aggiunto!");
    }
    
    if(!rubrica.aggiungiItem(item4)) 
    {
      System.out.println(item4+"\n\tNon aggiunto!");
    }
    
    /* Nome da cercare e ricerca */
    
    System.out.println("\nNominativo da cercare: ");
    String nome = "";

    try 
    {
      nome = input.nextLine();
    } catch(NoSuchElementException ex) 
    {
      ex.printStackTrace();
    }
    
    Item item = rubrica.getItem(nome);
    
    if(item == null) 
    {
      System.out.println("Nominativo non esistente!");
    } else 
    {
      System.out.println(item);
    }
    
  }
}


Main1.java, senza i controlli sui mancati inserimenti
Codice:
import java.util.Scanner;
import java.util.NoSuchElementException;


class Main1 
{
  public static void main(String[] args) 
  {
    Scanner input = new Scanner(System.in);
    
    // Creo una rubrica inizialmente vuota
    Rubrica rubrica = new Rubrica();
    
    // Creo 3 Item
    Item item1 = new Item("Roberto", "Via qualcosa", "123456789");
    Item item2 = new Item("Robert", "via qualcosa", "987654321");
    Item item3 = new Item("Robertino", "via qualcosa", "8873662233");
    Item item4 = new Item("Rob", "via qualcosa", "123456789");
    
    rubrica.aggiungiItem(item1);
    rubrica.aggiungiItem(item2);
    rubrica.aggiungiItem(item3); 
    rubrica.aggiungiItem(item4);
    
    /* Nome da cercare e ricerca */
    
    System.out.println("\nNominativo da cercare: ");
    String nome = "";

    try 
    {
      nome = input.nextLine();
    } catch(NoSuchElementException ex) 
    {
      ex.printStackTrace();
    }
    
    Item item = rubrica.getItem(nome);
    
    if(item == null) 
    {
      System.out.println("Nominativo non esistente!");
    } else 
    {
      System.out.println(item);
    }
    
  }
}

Grazie mille, lo apprezzo molto :ok:. Solo una curiosità non capisco il ruolo svolto dalle if nel main.java. Tu hai creato 4 nuovi item, e infine hai creato altre 4 if in questo modo:

Codice:
import java.util.Scanner;
import java.util.NoSuchElementException;


class Main 
{
  public static void main(String[] args) 
  {
    Scanner input = new Scanner(System.in);
    
    // Creo una rubrica inizialmente vuota
    Rubrica rubrica = new Rubrica();
    
    // Creo 3 Item
    Item item1 = new Item("Roberto", "Via qualcosa", "123456789");
    Item item2 = new Item("Robert", "via qualcosa", "987654321");
    Item item3 = new Item("Robertino", "via qualcosa", "8873662233");
    Item item4 = new Item("Rob", "via qualcosa", "123456789");
    
    if(!rubrica.aggiungiItem(item1)) 
    {
      System.out.println(item1+"\n\tNon aggiunto!");
    }
    
    if(!rubrica.aggiungiItem(item2)) 
    {
      System.out.println(item2+"\n\tNon aggiunto!");
    }
    
    if(!rubrica.aggiungiItem(item3)) 
    {
      System.out.println(item3+"\n\tNon aggiunto!");
    }
    
    if(!rubrica.aggiungiItem(item4)) 
    {
      System.out.println(item4+"\n\tNon aggiunto!");
    }
    
    /* Nome da cercare e ricerca */
    
    System.out.println("\nNominativo da cercare: ");
    String nome = "";

    try 
    {
      nome = input.nextLine();
    } catch(NoSuchElementException ex) 
    {
      ex.printStackTrace();
    }
    
    Item item = rubrica.getItem(nome);
    
    if(item == null) 
    {
      System.out.println("Nominativo non esistente!");
    } else 
    {
      System.out.println(item);
    }
    
  }
}

Qual'è il ruolo della if? e dato che ne hai fatta una per ogni nuovo item creato non ci sarebbe modo di accorciare la cosa tramite un for each?
 
Ultima modifica da un moderatore:

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,223
1,853
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
Le if nel main.java testano che il valore sia stato effettivamente aggiunto. In una situazione reale aggiungeresti un elemento quando richiesto, quindi avresti magari una funzione incaricata che riceve il nuovo elemento a seguito di un evento. Quindi restituire un true/false ha senso.
Se fossero memorizzati in un array (gli item da aggiungere) si potrebbe utilizzare un ciclo for.

In questo caso era per mostrarti come puoi utilizzare il valore booleano di ritorno. In una situazione reale non creeresti probabilmente nemmeno gli item in quel modo, appunto. ;)
 

Robert T.

Utente Attivo
134
11
Le if nel main.java testano che il valore sia stato effettivamente aggiunto. In una situazione reale aggiungeresti un elemento quando richiesto, quindi avresti magari una funzione incaricata che riceve il nuovo elemento a seguito di un evento. Quindi restituire un true/false ha senso.
Se fossero memorizzati in un array (gli item da aggiungere) si potrebbe utilizzare un ciclo for.

In questo caso era per mostrarti come puoi utilizzare il valore booleano di ritorno. In una situazione reale non creeresti probabilmente nemmeno gli item in quel modo, appunto. ;)

In che senso:

non creeresti probabilmente nemmeno gli item in quel modo, appunto.

e come?
 

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,223
1,853
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
In una situazione reale molto probabilmente non sapresti quanti Item avrai nel software. Sarebbe quindi l'utente ad inserirli, e saresti costretto a gestirli diversamente per averne N in memoria.
 

Robert T.

Utente Attivo
134
11
In una situazione reale molto probabilmente non sapresti quanti Item avrai nel software. Sarebbe quindi l'utente ad inserirli, e saresti costretto a gestirli diversamente per averne N in memoria.

Una rubrica ha campi predefiniti, basta che gli abiliti l'opzione di non essere per forza compilata dall'utente.
 

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,223
1,853
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
Non parlavo di campi da personalizzare da parte dell'utente (in quel caso ci sarebbero da affrontare altri aspetti, ma sorvoliamo ora).
Mi riferivo agli Item. Un Item per com'è stato definito è composto da nome, indirizzo, telefono. Quindi servirà un array di Item per tenerli in memoria, dato che non sai a priori quanti ne avrai.
Certamente detto così è riduttivo; lo scenario può cambiare, la progettazione varia. Ad ogni modo un elenco presumibilmente ci sarà.
 

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!