Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15

Discussione: [Java] Posso farlo?

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    1,965

    [Java] Posso farlo?

    Posso fare una cosa del genere?

    codice:
    Font cFont = new Font(charOfFont, 
    if(decOfFont1.substring(0,1) != "no"){
    Font.decOfFont1
    },
    if(decOfFont2.substring(0,1) != "no"){
    Font.decOfFont2
    },
    if(decOfFont3.substring(0,1) != "no"){
    Font.decOfFont3
    }, sizeOfFont);

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    No... non puoi farlo in quel modo. Però esiste un operatore ternario che ritorna un valore in base ad un espressione booleana. Questo operatore è il punto di domanda.

    Questa è la sua sintassi ed è possibile, ovviamente, annidarlo:
    codice:
    valore_di_ritorno = (espressione_booleana) ? (valore_se_vero) : (valore_se_falso);
    
    valore_di_ritorno varrà (valore_se_vero) se l'espressione_booleana è vera, altrimenti avrà valore (valore_se_falso).
    Può essere usato, per esempio in questo modo:
    codice:
    oggetto.setColor( (opaco != -1) ? Color.green : Color.white );
    
    In questo caso l'oggetto avrà il colore verde se opaco è diverso da -1, altrimenti avrà valore bianco.
    Può essere annidato:
    codice:
    oggetto.setColor( (opaco != -1) ? Color.green : ((gradazione != -1) ? Color.white : Color.black) );
    Prova a vedere se riesci ad adattare questo operatore (magari annidandolo) al tuo caso.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    attento che le stringhe vanno confrontate con il metodo equals(String s) di String e che substring(0,1) restituisce una stringa di un carattere...
    SO: Debian Sarge kernel 2.6.11
    Lang: Java, C++, C

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da Lucis
    attento che le stringhe vanno confrontate con il metodo equals(String s) di String e che substring(0,1) restituisce una stringa di un carattere...
    Giusto... mi era sfuggito!
    Attento anche ai confronti! (Bravo Lucis!)


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    1,965
    mmh qualcosa tipo questo

    codice:
    Font cFont = new Font(charOfFont, 
    decOfFont1.substring(0,1) != "no" ? Font.decOfFont1 : ,
    decOfFont2.substring(0,1) != "no" ? Font.decOfFont2 : ,
    decOfFont3.substring(0,1) != "no" ? Font.decOfFont3 : ,
    sizeOfFont);

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    1,965
    se no non potrei usare un metodo per settare lo stile
    qualcosa (se esiste) tipo

    oggettoTextArea.setStyle(Font.BOLD);

    ?

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Non capisco quello che vuoi fare, comunque l'oggetto TextArea ha un metodo che si chiama setFont(Font f) che permette di settare il font da usare.

    Per esempio questo setta come font per la TextArea il Dialog di dimensione 12 e grassetto:

    oggettoTextArea.setFont ( new Font("Dialog", 12, Font.BOLD) );


    Per il tuo post precedente, stai attento che se applichi substring(0, 1) ad una stringa, ti restituisce una stringa contenente SOLO IL PRIMO CARATTERE.
    Questo significa 2 cose:

    1) Non avrai mai una stringa come "no" con la quale effettuare il confronto, al massimo una con "n"

    2) Il confronto fra oggetti stringa si effettua con equals() in questo modo: if (miaStringa.substring(0, 1).equals("n")) {...}


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    1,965
    Font cFont = new Font(charOfFont,
    decOfFont1.substring(0,2).equals("no") ? Font.BOLD : ,
    decOfFont2.substring(0,2).equals("no") ? Font.ITALIAN : ,
    decOfFont3.substring(0,2).equals("no") ? Font.PLAIN : ,
    sizeOfFont);

    questo da'

    editorz.java:103: illegal start of expression
    decOfFont1.substring(0,2).equals("no") ? Font.BOLD : ,
    ^
    editorz.java:106: ')' expected
    sizeOfFont);
    ^

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    1,965
    Originariamente inviato da LeleFT
    Non capisco quello che vuoi fare
    si puo' definire in un secondo momento lo stile di un font?

  10. #10
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Sì... si può definire in un secondo momento, ma quello che hai scritto tu
    Font cFont = new Font(charOfFont,
    decOfFont1.substring(0,2).equals("no") ? Font.BOLD : ,
    decOfFont2.substring(0,2).equals("no") ? Font.ITALIAN : ,
    decOfFont3.substring(0,2).equals("no") ? Font.PLAIN : ,
    sizeOfFont);
    è errato: non puoi mettere una virgola all'interno di un espressione.
    Quello che stai cercando di fare è una cosa banalissima: basta che non ti complichi la vita e metti l'IF all'esterno di tutto.
    codice:
    Font cFont = null;
    if (decOfFont1.substring(0,2).equals("no")) {
       cFont = new Font(charOfFont, Font.BOLD, sizeOfFont);
    }
    if (decOfFont2.substring(0,2).equals("no")) {
       cFont = new Font(charOfFont, Font.ITALIC, sizeOfFont);
    }
    if (decOfFont3.substring(0,2).equals("no")) {
       cFont = new Font(charOfFont, Font.PLAIN, sizeOfFont);
    }
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.