Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Il primo Sony con retroilluminazione True RGB alla prova del banco di misura e dei contenuti: luminanza enorme, colori accurati in HDR e un antiriflesso molto efficace. I limiti sono due sole HDMI 2.1 e il blooming fuori asse
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 24-01-2008, 14:07   #1
misterxxitalia
Member
 
Iscritto dal: Dec 2007
Messaggi: 277
[java]aiuto controlli input

ciao a tutti sto cercando di creare dei controlli che mi permettano di intercettare dei dati fasulli (tipo dati nulli o dati troppo corti).queste sono le propieta di nominativo...
Codice PHP:
class Rubrica
{
  private 
String nome;
private 
String cognome;
private 
String indirizzo;
private 
String telefono;
private 
String affinita;

Rubrica(String NomeString CognomeString IndirizzoString TelefonoString Affinita) {
try 
{
    
setNome(Nome);
    
setCognome(Cognome);
    
setIndirizzo(Indirizzo);
    
setTelefono(Telefono);
    
setAffinita(Affinita);
    }
catch (
IOException e) {
        
System.out.println(e);
       
    }
     
    catch (
InserimentoErratoException e)
 {
   
System.err.println(e);
 
 }} 
e questo è il mio metodo per intercettare gli errori...
Codice PHP:
public void setNome(String Nome)throws InserimentoErratoExceptionIOException {
if(
Nome.length()<4|| Nome.equals("")){
     throw new 
InserimentoErratoException();
    }
    else {
        
this.nome Nome;
         }
}

public 
String getNome() {
    return 
nome;

è solo che mi da errore sul metodo getNome() chi mi sa dire cosa sbaglio??grazie!!
misterxxitalia è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2008, 14:12   #2
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Che errore ti da? Se ci posti tutto il codice è più facile capire.

Considera anche che se fai un getNome() subito dopo un setNome() che "fallisce", nome sarà null e verrà sollevata una NullPointerException.


Questo perchè hai dichiarato "nome" senza inizializzarlo.
private String nome;

Se ti va bene avere nome come una stringa vuota puoi fare così:
private String nome = new String();

Se, invece, come vedo nell'if in setNome() è proprio un caso che vuoi evitare allora
potresti inizializzarlo a un valore "senza senso", tipo:
private String nome = "not defined";

Ultima modifica di banryu79 : 24-01-2008 alle 14:21.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2008, 14:30   #3
misterxxitalia
Member
 
Iscritto dal: Dec 2007
Messaggi: 277
guarda mi da illegal start of expression sul metodo getnome()sinceramente non capisco cosa sbaglio...io vorrei proprio evitare che mi vengano dati in input certi dati...
misterxxitalia è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2008, 14:38   #4
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da misterxxitalia Guarda i messaggi
guarda mi da illegal start of expression sul metodo getnome()sinceramente non capisco cosa sbaglio...io vorrei proprio evitare che mi vengano dati in input certi dati...
Ah, allora è un errore di compilazione, io pensavo partisse qualche eccezione a runtime...

Come ho detto sopra, posta tutto il codice della classe (magari ordinatamente identato ), ci si mette un attimo a trovare l'errore, che comunque dovrebbe essere un errore di sintassi a questo punto.

Arguisco che non utilizzi un'IDE che ti segnala dinamicamente gli errori di sintassi, con che programma editi il codice?
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2008, 14:42   #5
misterxxitalia
Member
 
Iscritto dal: Dec 2007
Messaggi: 277
scusa posso passarti la mia classe in privato?ci sono persone che copiano la classe completamente e la spacciano x propria...
misterxxitalia è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2008, 15:00   #6
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da misterxxitalia Guarda i messaggi
scusa posso passarti la mia classe in privato?ci sono persone che copiano la classe completamente e la spacciano x propria...
Spiacente misterxxitalia, ma preferisco di no.

L'aiuto che sono disposto a dare lo do in pubblico, per scelta non accetto di aiutare in privato in contesti di forum pubblici.

Comunque non dovresti fare fatica a trovare l'errore: è un errore di sintassi, ma non lo rilevo nel codice che hai postato tu nel primo post.

Cmq, visto che l'illegal start of expression te la da sul metodo getNome(), vai a vedere cosa hai scritto nel codice della classe sulle righe subito prima della definizione di getNome(): il problema è là (magari hai chiuso male il metodo precedente, manca una parentesi graffa di chiusura o roba del genere)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2008, 15:11   #7
misterxxitalia
Member
 
Iscritto dal: Dec 2007
Messaggi: 277
ecco infatti il problema è che avevo chiuso male!!mi perdo sempre sulle stupidagini!!
ora quando vado a usare quel metodo scrivo cosi':
Codice PHP:
BufferedReader tastiera = new BufferedReader(new InputStreamReader(System.in));
System.out.println("dammi il nome:");
     
System.out.println("==>");
     
String Nome tastiera.readLine();
     
Rubrica.setNome(Nome); 
su Rubrica.setNome(Nome) mi da come errore cannot be referenced from a static contest..questo che vuol dire??
misterxxitalia è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2008, 15:52   #8
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Scusa ma come fai a chiamare il metodo setNome() in quel modo?

quando fai Rubrica.setNome() stai tentando di invocare setNome() dal nome della classe, ma perchè ciò sia possibile setNome() deve essere dichiarato static, cosa che da te vedo non è.

Altrimenti devi usare un'istanza della classe, non la classe stessa, per invocare il metodo:

Codice:
Rubrica miaRubrica  = new Rubrica( parametri al costruttore, bal, bla, bla);
...
miaRubrica.setNome("Arturo Bracchetti");

Piccola "nota di stile"....
Quote:
BufferedReader tastiera = new BufferedReader(new InputStreamReader(System.in));
System.out.println("dammi il nome:");
System.out.println("==>");
String Nome = tastiera.readLine();
Rubrica.setNome(Nome);
Per convenzione (e quindi questione di leggibilità di tutti) i nomi di variabili iniziano con la lettera minuscola, così come i nomi dei metodi; solo i nomi di Classi iniziano con la maiuscola.

così:
Codice:
BufferedReader tastiera = new BufferedReader(new InputStreamReader(System.in));
System.out.println("dammi il nome:");
     System.out.println("==>");
     String nome = tastiera.readLine();
     Rubrica.setNome( nome);
poi fai come preferisci (De gustibus), non è una critica, solo un consiglio.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2008, 16:14   #9
misterxxitalia
Member
 
Iscritto dal: Dec 2007
Messaggi: 277
tutti i consigli e critiche sono ben accette!!scusa non capisco bene come intendi usare lo static...ora ti posto il metodo:
Codice PHP:
void aggiunginomintativo() {
Rubrica miaRubrica = new Rubrica (setNome(mionome),setCognome(miocognome),setIndirizzo(mioindirizzo),setTelefono(miotelefono),setAffinita(miaaffinita));
boolean cicla false;
    do {
      
cicla false;
try 
{
BufferedReader tastiera = new BufferedReader(new InputStreamReader(System.in));
System.out.println("dammi il nome:");
     
System.out.println("==>");
     
String mionome tastiera.readLine();
     
miaRubrica.setNome(mionome);
     
System.out.println("dammi il cognome");
     
System.out.println("==>");
     
String cognome tastiera.readLine();
     
Rubrica.setNome(miocognome);

System.out.println("dammi il recapito");
     
System.out.println("==>");
     
String recapito tastiera.readLine();
     
Rubrica.setNome(miorecapito);
        

System.out.println("dammi il numero di telefono");
     
System.out.println("==>");
     
String telefono tastiera.readLine();
     
Rubrica.setNome(miotelefono);
        

System.out.println("dammi il tipo di affinita; premi a per 'conoscente';b per 'amico';c per 'parente' d per 'amicone' e per 'amicissimo'");
System.out.println("==>");
 
    
miaaffinita leggiStringa();  
    
String affinitascelta ="";  
    switch (
miaaffinita.charAt(0)) {
case 
'a':affinitascelta "conoscente";
break;
case 
'b':affinitascelta "amico";
break;
case 
'c':affinitascelta "parente";
break;
case 
'd':affinitascelta "amicone";
break;
case 
'e':affinitascelta "amicissimo";
break;
default: 
cicla true;

                                    }

if (!(
nominativi.contains(x)))nominativi.add(x);
else 
System.out.println ("nominativo gia esistente!"); 
cicla true;
}

     
     catch (
IOException e) {
        
System.out.println(e);
        
cicla true;
    }
     catch (
StringIndexOutOfBoundsException e){
           
System.out.println(e);
           
cicla true;
    }
    catch (
InserimentoErratoException e)
 {
   
System.err.println(e);
  
cicla true
 }


}
while ( 
cicla );
}


oltre a non poter essere void il metodo che sbaglio??
misterxxitalia è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2008, 16:29   #10
Gargiulo
Member
 
Iscritto dal: May 2002
Messaggi: 84
non sono stato a leggere il codice, ma il punto è che il metodo devi chiamarlo sulla variabile miaRubrica, non sulla classe Rubrica. Per poter invocare un metodo su una classe, il metodo deve essere "statico".
Gargiulo è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2008, 16:32   #11
Gargiulo
Member
 
Iscritto dal: May 2002
Messaggi: 84
il problema sta in queste righe:

Rubrica.setNome(miocognome);
Rubrica.setNome(miorecapito);

che sono sbagliate, devono diventare
miaRubrica.setCognome(miocognome);
miaRubrica.setRecapito(miorecapito);

occhio ai copia-incolla, e mi raccomando se un metodo non è statico non lo puoi invocare sulla classe, va invocato sull'istanza di variabile
Gargiulo è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2008, 17:18   #12
misterxxitalia
Member
 
Iscritto dal: Dec 2007
Messaggi: 277
no no il problema non è quello (con la fretta non ho riscritto tutto correttamente...)
Codice PHP:
void aggiunginomintativo() {
Rubrica miaRubrica = new Rubrica (setNome(mionome),setCognome(miocognome),setIndirizzo(mioindirizzo),setTelefono(miotelefono),setAffinita(miaaffinita)); 
mi dice di non trovare la variabile mionome miocognome ecc...(che dichiarerò dopo....) ma come faccio??
misterxxitalia è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2008, 17:40   #13
Don[ITA]
Senior Member
 
L'Avatar di Don[ITA]
 
Iscritto dal: Jul 2006
Città: Bergamo
Messaggi: 401
beh ma è ovvio che non puoi passargli al costruttore di Rubrica variabili che non hai istanziato

Io direi di fare cosi:
Codice:
public class Rubrica{
public Rubrica(){//se vuoi inizializzi le variabili a null o "" o quello che ti pare
}
...metodi della rubrica...
così quando istanzi la classe fai qualcosa come:
Codice:
Rubrica miaRubrica = new Rubrica();
e poi fai tutti i set che vuoi

Ciauz
__________________
iMac 27" 5K
Don[ITA] è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2008, 18:07   #14
misterxxitalia
Member
 
Iscritto dal: Dec 2007
Messaggi: 277
va bene cosi??
Codice PHP:
class Rubrica
{
  private 
String nome;
private 
String cognome;
private 
String indirizzo;
private 
String telefono;
private 
String affinita;

public 
Rubrica(String NomeString CognomeString IndirizzoString TelefonoString Affinita) {
try 
{
    
setNome(Nome);
    
setCognome(Cognome);
    
setIndirizzo(Indirizzo);
    
setTelefono(Telefono);
    
setAffinita(Affinita);
    }
catch (
IOException e) {
        
System.out.println(e);
       
    }
     
    catch (
InserimentoErratoException e)
 {
   
System.err.println(e);
 
 }} 
adesso come lo chiamo il metodo?
misterxxitalia è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2008, 20:24   #15
Don[ITA]
Senior Member
 
L'Avatar di Don[ITA]
 
Iscritto dal: Jul 2006
Città: Bergamo
Messaggi: 401
Puoi farla così la tua Rubrica:
Codice:
public class Rubrica {
    
    private String nome;
    private String cognome;
    private String indirizzo;
    private String telefono;
    private String affinita; 
    
    public Rubrica(){
        nome = "";
        cognome = "";
        indirizzo = "";
        telefono = "";
        affinita = "";
    }
    
    public void setNome(String nome){
        this.nome = nome;
    }
    
    public String getNome(){
        return nome;
    }
    //e cosi via per tutte le variabili
  
}
Come hai scritto te nn va bene
Poi i controlli sull'input li fai quando lo richiedi...

Ciauz
__________________
iMac 27" 5K
Don[ITA] è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2008, 20:33   #16
misterxxitalia
Member
 
Iscritto dal: Dec 2007
Messaggi: 277
ho gia messo i controlli quando li chiedevo xo mi è stato fatto notare che si puo baypassare tutti i controlli e scrivere direttamente su setNome()per questo che vorrei mettere li i controlli...tu cosa ne pensi??
misterxxitalia è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare Mova Z70 Ultra Roller Complete: motore potente, ...
Dopo 23 anni di silenzio, Warcraft 3 spi...
Roblox sfida l'ecosistema gaming: app st...
OpenAI accusata di plagio dai migliori m...
Altro attacco hacker dell'IA: gli agenti...
Stiamo davvero perdendo il controllo del...
Microsoft perde un pilastro: Frank Shaw ...
Diablo V annunciato a sorpresa: il colpo...
Meno di 5 euro per il 5G: l'offerta Kena...
World of Warcraft: Forever è il Classic+...
La Serie A con DAZN e Amazon Prime con l...
Giochi Ubisoft su Steam senza Ubisoft Co...
Miami Beach ha autorizzato la maxi opera...
Apple regala un altro anno di funzioni s...
Alla fine è successo davvero: Vol...
Il meglio di Amazon del weekend in uno s...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 06:18.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v