class Options {
  /* Options avec leurs valeurs par défaut, (voir usage) */
  int verbose = 0 ;
  int width = 5 ;
  String dico = "./nv.txt" ;
  /* Interprétation des arguments */
  int nwords = 0 ;      // Nombre de mots des anagrammes
  String letters = "" ; // Stock de lettres

  
  private void usage(String prog) {
    System.err.println("Usage: java " + prog + " [options]* nom_1 ... nom_n") ;
    System.err.println("Les options sont :") ;
    System.err.println("  -v, affiche des messages sur le fonctionnement, peut être répété.") ;
    System.err.println("  -w n, largeur de la fenêtre [n >= 2, défaut " + width + "]") ;
    System.err.println("  -d dico, change le dictionnaire [défaut " + dico + "]") ;
    System.exit(2) ;
  }

  private int unkownOption(String prog, String [] args, int i) {
    usage(prog) ;
    System.exit(2) ;
    return 0 ; // Not reached
  }

  private String getArg(String prog, String [] argv, int argi) {
    if (argi >= argv.length) {
      usage(prog) ;
      System.exit(2) ;

    }
    return argv[argi] ;     
  }

  Options(String [] arg) { this("Pseudo", arg) ; }

  Options(String prog, String [] argv) {
    int argi=0 ;
    while (argi < argv.length && argv[argi].charAt(0) == '-') {
      if (argv[argi].compareTo("-w") == 0) {
        width = Integer.parseInt(getArg(prog, argv, ++argi)) ;
        if (width < 2) {
          usage(prog) ;
          System.exit(2) ;
        }
      } else if (argv[argi].compareTo("-d") == 0) {
        dico = getArg(prog, argv, ++argi) ;
      } else if (argv[argi].compareTo("-v") == 0) {
        verbose++ ;
      } else {
        argi = unkownOption(prog, argv, argi) ;
      }
      argi++ ;
    }
    for (int k = argi ; k < argv.length ; k++) {
      nwords++ ;
      letters = letters + argv[k] ;	
    }
  }
}

