Domanda Aiuto esercizio in Java!

Utred76

Utente Iron
10 Novembre 2021
3
3
3
8
Ciao ragazzi, cerco aiuto per il main del seguente esercizio, non capisco cosa sbaglio!

Un albergo ha un sistema di gestione delle chiavi delle camere automatizzato: i clienti prendono e restituiscono le chiavi da un sistema portachiavi, senza l'intervento del portiere. Ogni chiave è identificata dal numero della camera (non necessariamente progressivo) ed è associata al nominativo del cliente a cui è stata assegnata la camera. Il sistema portachiavi può contenere le chiavi di tutte le camere dell'albergo e ogni posizione può essere occupata con una qualsiasi chiave. Il cliente che esce dall'albergo lascia la propria chiave nella prima posizione libera, il cliente che entra nell'albergo richiede la chiave fornendo il numero della camera o il proprio nominativo. Questo è ciò che ho fatto:

Java:
public class Chiave {
    private String nominativo;
    private Integer id;

    public Chiave() {
        this.nominativo="";
        this.id=0;
    }

    public Chiave(String nominativo, Integer id) {
        this.nominativo = nominativo;
        this.id = id;
    }
    public Chiave(Chiave chiave) {
        this.nominativo=chiave.getNominativo();
        this.id=chiave.getId();
    }

    Chiave(Integer id, String nominativo) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    public String getNominativo() {
        return this.nominativo;
    }

    public void setNominativo(String nominativo) {
        this.nominativo = nominativo;
    }

    public Integer getId() {
        return this.id;
    }

    public void setId(Integer id) {
        this.id = id;
    }
    
    public Boolean equals ( Chiave c2){
        if(this.getId() == c2.getId() && this.getNominativo().equalsIgnoreCase(c2.getNominativo()))
            return true;
        else
            return false;
    }
    
}

//Classe Portachiavi

public class Portachiavi {
    private Chiave [] c;
    private Integer n;

    public Portachiavi(Integer n) {
        
        this.n = n;
        
        this.c = new Chiave [this.n];
    }
    
    public Integer getLength(){
        return this.c.length;
    }
    
    public void setChiave( Chiave p, Integer i ){
        
        this.c[i] = new Chiave(p);
        
    }
    
    public Integer getN(){
        Integer count=0;
        for ( int i=0; i<this.c.length; i++){
            if ( this.c[i] != null ) count ++;
        }
        return count;
}
    public void inserisciChiave(Chiave chiave){
        for ( int i=0; i<this.c.length; i++){
            if ( this.c[i] == null ) {
                this.c[i]=new Chiave(chiave);
                 break;
            }
              
        }
    }
    public Chiave prelevaChiaveCamera(Integer id){
        Chiave ch=null;
         for ( int i=0; i<this.c.length; i++){
            if ((this.c[i]!=null) && (this.c[i].getId()==id))
                ch = new Chiave(this.c[i]);
            this.c[i]=null;
            break;
         }
         return ch;
    }
    public Chiave prelevaChiaveCamera(String nominativo){
        Chiave ch=null;
         for ( int i=0; i<this.c.length; i++){
            if ((this.c[i]!=null) && (this.c[i].getNominativo().equalsIgnoreCase(nominativo)))
                ch = new Chiave(this.c[i]);
            this.c[i]=null;
            break;
         }
         return ch;
    }
}

//Classe Start

public class Start {
    
package com.mycompany.esn26paga136;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.Arrays;
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
    try {
            
            InputStreamReader input = new InputStreamReader(System.in);
            BufferedReader keyboard = new BufferedReader(input);
            Integer n, id;
            String nominativo, s;
            Chiave array[];
            array=null;   
            
            do{

                System.out.println("Inserisci la grandezza dell'array: ");
                n = Integer.parseInt(keyboard.readLine());
                    
            } while ( n <= 1 );
            
            Portachiavi c = new Portachiavi(n);
            
            for(Integer i = 0; i < n; i++){
              
                    System.out.println("Inserisci il nominativo:");
                    nominativo = (keyboard.readLine());
                    System.out.println("Inserisci il numero della camera:");
                    id = Integer.parseInt(keyboard.readLine());
                    System.out.println("---------------------------------------------------------------------");
                    
                Chiave hc = new Chiave(nominativo, id);
                c.setChiave(hc, i);
            }
            System.out.println("Numero della camera?");
            id = Integer.parseInt(keyboard.readLine());

             System.out.println("Esci o entri?(esco, entro): ");
             s = (keyboard.readLine());
            
             Chiave chi = new Chiave("", 2);
             if (s == "esco"){
              for(Integer i = 0; i < n; i++){
                  c.inserisciChiave(chi);
                 System.out.println("Stampa nuovo vettore:");
                 for(Integer e = 0; e < n; e++){
                     c.inserisciChiave(chi);
                     System.out.println(Arrays.toString(array));
                    
                 }
              }
             } else if(s == "entro"){
                 System.out.println("Fornisci il nominativo o l'id: ");
                 nominativo = (keyboard.readLine());
                 c.prelevaChiaveCamera(nominativo);
             }
            

                } catch (IOException ex) {
                    Logger.getLogger(Start.class.getName()).log(Level.SEVERE, null, ex);
       }
   } 
}
che ho fatto:
 
  • Mi piace
Reazioni: lollingher
L'errore che vedo è il confronto con le stringhe. Per confrontare due stringhe devi utilizzare equals().

Comunque la prossima volta riporta anche il problema che riscontri, che sia un errore o altro.
 
  • Mi piace
Reazioni: 0xbro
Ciao ragazzi, cerco aiuto per il main del seguente esercizio, non capisco cosa sbaglio!

Un albergo ha un sistema di gestione delle chiavi delle camere automatizzato: i clienti prendono e restituiscono le chiavi da un sistema portachiavi, senza l'intervento del portiere. Ogni chiave è identificata dal numero della camera (non necessariamente progressivo) ed è associata al nominativo del cliente a cui è stata assegnata la camera. Il sistema portachiavi può contenere le chiavi di tutte le camere dell'albergo e ogni posizione può essere occupata con una qualsiasi chiave. Il cliente che esce dall'albergo lascia la propria chiave nella prima posizione libera, il cliente che entra nell'albergo richiede la chiave fornendo il numero della camera o il proprio nominativo. Questo è ciò che ho fatto:

Java:
public class Chiave {
    private String nominativo;
    private Integer id;

    public Chiave() {
        this.nominativo="";
        this.id=0;
    }

    public Chiave(String nominativo, Integer id) {
        this.nominativo = nominativo;
        this.id = id;
    }
    public Chiave(Chiave chiave) {
        this.nominativo=chiave.getNominativo();
        this.id=chiave.getId();
    }

    Chiave(Integer id, String nominativo) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    public String getNominativo() {
        return this.nominativo;
    }

    public void setNominativo(String nominativo) {
        this.nominativo = nominativo;
    }

    public Integer getId() {
        return this.id;
    }

    public void setId(Integer id) {
        this.id = id;
    }
   
    public Boolean equals ( Chiave c2){
        if(this.getId() == c2.getId() && this.getNominativo().equalsIgnoreCase(c2.getNominativo()))
            return true;
        else
            return false;
    }
   
}

//Classe Portachiavi

public class Portachiavi {
    private Chiave [] c;
    private Integer n;

    public Portachiavi(Integer n) {
       
        this.n = n;
       
        this.c = new Chiave [this.n];
    }
   
    public Integer getLength(){
        return this.c.length;
    }
   
    public void setChiave( Chiave p, Integer i ){
       
        this.c[i] = new Chiave(p);
       
    }
   
    public Integer getN(){
        Integer count=0;
        for ( int i=0; i<this.c.length; i++){
            if ( this.c[i] != null ) count ++;
        }
        return count;
}
    public void inserisciChiave(Chiave chiave){
        for ( int i=0; i<this.c.length; i++){
            if ( this.c[i] == null ) {
                this.c[i]=new Chiave(chiave);
                 break;
            }
             
        }
    }
    public Chiave prelevaChiaveCamera(Integer id){
        Chiave ch=null;
         for ( int i=0; i<this.c.length; i++){
            if ((this.c[i]!=null) && (this.c[i].getId()==id))
                ch = new Chiave(this.c[i]);
            this.c[i]=null;
            break;
         }
         return ch;
    }
    public Chiave prelevaChiaveCamera(String nominativo){
        Chiave ch=null;
         for ( int i=0; i<this.c.length; i++){
            if ((this.c[i]!=null) && (this.c[i].getNominativo().equalsIgnoreCase(nominativo)))
                ch = new Chiave(this.c[i]);
            this.c[i]=null;
            break;
         }
         return ch;
    }
}

//Classe Start

public class Start {
   
package com.mycompany.esn26paga136;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.Arrays;
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
    try {
           
            InputStreamReader input = new InputStreamReader(System.in);
            BufferedReader keyboard = new BufferedReader(input);
            Integer n, id;
            String nominativo, s;
            Chiave array[];
            array=null;  
           
            do{

                System.out.println("Inserisci la grandezza dell'array: ");
                n = Integer.parseInt(keyboard.readLine());
                   
            } while ( n <= 1 );
           
            Portachiavi c = new Portachiavi(n);
           
            for(Integer i = 0; i < n; i++){
             
                    System.out.println("Inserisci il nominativo:");
                    nominativo = (keyboard.readLine());
                    System.out.println("Inserisci il numero della camera:");
                    id = Integer.parseInt(keyboard.readLine());
                    System.out.println("---------------------------------------------------------------------");
                   
                Chiave hc = new Chiave(nominativo, id);
                c.setChiave(hc, i);
            }
            System.out.println("Numero della camera?");
            id = Integer.parseInt(keyboard.readLine());

             System.out.println("Esci o entri?(esco, entro): ");
             s = (keyboard.readLine());
           
             Chiave chi = new Chiave("", 2);
             if (s == "esco"){
              for(Integer i = 0; i < n; i++){
                  c.inserisciChiave(chi);
                 System.out.println("Stampa nuovo vettore:");
                 for(Integer e = 0; e < n; e++){
                     c.inserisciChiave(chi);
                     System.out.println(Arrays.toString(array));
                   
                 }
              }
             } else if(s == "entro"){
                 System.out.println("Fornisci il nominativo o l'id: ");
                 nominativo = (keyboard.readLine());
                 c.prelevaChiaveCamera(nominativo);
             }
           

                } catch (IOException ex) {
                    Logger.getLogger(Start.class.getName()).log(Level.SEVERE, null, ex);
       }
   }
}
che ho fatto:
Il confronti di stringhe non si fanno in quel modo, dovresti utilizzare
Java:
if(s.equals("entro")){

                 System.out.println("Fornisci il nominativo o l'id: ");

                 nominativo = (keyboard.readLine());

                 c.prelevaChiaveCamera(nominativo);

             }