Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    17

    Evocazione modalità da riga di comando

    Ciao a tutti! Sto finendo un programma in java, Mastermind, che ha due modalità di gioco: una pc contro umano e l'altra pc contro pc... Devo fare una sorta di switch tra le due modalità di gioco quando si avvia da riga di comando. Ad esempio, per la modalità uomo contro pc evocherò il programma in questo modo:

    java Mastermind -p <in> <out>
    (dove in e out sono i file in cui va rispettivamente a leggere e scrivere)

    e per la modalità pc contro umano digiterò:
    java Mastermind -u

    La mia domanda è: all'interno del source come faccio a creare questa sorta di switch quando il programma viene chiamato?

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    codice:
    public static void main(String[] args) {
       ...
    }
    Dai un'occhiata a quell'array...
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    17
    Quindi se ho ben capito per richiamare una cera modalità basta fare

    codice:
    public static void main(String[] args) {
       if (args[0]=="-p") { 
       ...
       }
    else if (args[0]=="-u") {
       ...
       }
    
    }
    Però mi da questo errore: java.lang.ArrayIndexOutOfBoundsException: 0

  4. #4
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    Per il confronto di uguaglianza fra stringhe utilizza il metodo .equals(), non l'operatore ==.
    Sicuramente devi gestire l'eccezione ArrayIndexOutOfBoundsException: se l'utente sbaglia a digitare e si dimentica il parametro?
    Per il resto la struttura è corretta (salvo il fatto che non prevedi un "else"), probabilmente non passi il parametro da riga di comando

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    17
    Ok, riesco a switchare nelle due opzioni, ma nel caso venga non venga data una stringa o la stringa non sia una di quelle due l'eccezione che ho aggiunto non va. Ho creato una classe:

    codice:
    public class ErroreStringa extends Exception {
    
      ErroreStringa()
      {
        super("Attenzione, stai riferendo una stringa non valida");
      }
    }
    Mentre nel main dell'altra classe ho aggiunto

    codice:
    public static void main(String[] args) throws ErroreStringa  {
    ...
    else throw new ErroreStringa();
    }
    Ma quando vado a mettereuna stringa non riconosciuta mi risponde con questo:

    Exception in thread "main" ErroreStringa at Classe.main<Classe.java:23>

    (La riga 23 è appunto "else throw new ErroreStringa();"). Cos'è che sbaglio?

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    E non è corretto? Glielo stai dicendo tu di sollevare l'eccezione...

    throw serve proprio a sollevare un'eccezione ed è quello che accade: la JVM si ferma con l'eccezione e ti dice anche a quale punto è stata sollevata.


    Che comportamento ti saresti aspettato?


    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

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    17
    Ok così va bene, avevo sbagliato io. Un'altra domanda: se oltre alla modalità volessi specificare due file dove andare rispettivamente a leggere e a scrivere dati (input.txt e output.txt) e un numero?

    Esempio:
    java nomeprogramma -p input.txt output.txt 4529

  8. #8
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da Mh2
    Ok così va bene, avevo sbagliato io. Un'altra domanda: se oltre alla modalità volessi specificare due file dove andare rispettivamente a leggere e a scrivere dati (input.txt e output.txt) e un numero?
    Dov'è il problema? Ti ritrovi tutto nell'array passato al main...
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

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.