Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza
Motorola edge 70 porta il concetto di smartphone ultrasottile su un terreno più concreto e accessibile: abbina uno spessore sotto i 6 mm a una batteria di capacità relativamente elevata, un display pOLED da 6,7 pollici e un comparto fotografico triplo da 50 MP. Non punta ai record di potenza, ma si configura come alternativa più pragmatica rispetto ai modelli sottili più costosi di Samsung e Apple
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026
Sono molte le novità che ASUS ha scelto di presentare al CES 2026 di Las Vegas, partendo da una gamma di soluzioni NUC con varie opzioni di processore passando sino agli schermi gaming con tecnologia OLED. Il tutto senza dimenticare le periferiche di input della gamma ROG e le soluzioni legate alla connettività domestica
Le novità ASUS per il 2026 nel settore dei PC desktop
Le novità ASUS per il 2026 nel settore dei PC desktop
Molte le novità anticipate da ASUS per il 2026 al CES di Las Vegas: da schede madri per processori AMD Ryzen top di gamma a chassis e ventole, passando per i kit di raffreddamento all in one integrati sino a una nuova scheda video GeForce RTX 5090. In sottofondo il tema dell'intelligenza artificiale con una workstation molto potente per installazioni non in datacenter
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 24-01-2008, 15: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, 15: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 15:21.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2008, 15: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, 15: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, 15: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, 16: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, 16: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, 16: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, 17: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, 17: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, 17: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, 18: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, 18: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, 19: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, 21: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, 21: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


Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza Motorola edge 70: lo smartphone ultrasottile che...
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026 Display, mini PC, periferiche e networking: le n...
Le novità ASUS per il 2026 nel settore dei PC desktop Le novità ASUS per il 2026 nel settore de...
Le novità MSI del 2026 per i videogiocatori Le novità MSI del 2026 per i videogiocato...
I nuovi schermi QD-OLED di quinta generazione di MSI, per i gamers I nuovi schermi QD-OLED di quinta generazione di...
Il miglior deumidificatore su Amazon sce...
Prosegue lo sviluppo del telescopio spaz...
28 astronauti cinesi hanno condotto un'e...
Dal Padiglione Italia al mercato globale...
POCO M8: display AMOLED luminoso, batter...
ECOVACS, tante novità a Las Vegas...
Caso Galaxy Ring difettoso: Samsung chiu...
Targa e assicurazione per monopattini el...
AI Cloud Protect: la soluzione di Check ...
Nuovo spettacolare video del razzo spazi...
Hisense presenta a CES 2026 il display M...
XPeng P7+ è pronta per l'Europa: ...
IKEA nuove lampade Matter annunciate al ...
Il telescopio Hubble potrebbe andare dis...
Hisense introduce RGB MiniLED evo (a qua...
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:51.


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