import java.util.Vector;

//clase para probar 
//los diferentes conceptos sobre 
//clases de utilidad

//ejecute java Utilidades <#opcion> <valor>

//#opcion: 	0 para crear un objeto String y un Objeto StringBuffer
//valor: 	cualquier valor de caracter imprimible ejemplo 135
//ejecute --> java Utilidades 1 135

//#opcion: 	1 para usar la clase math
//valor: 	cualquier valor para calcular su raiz y su conversion a grados
//ejecute --> java Utilidades 2 4

//#opcion: 	2 para usar la clase Vector de java.util
//valor: 	no requerido
//ejecute --> java Utilidades 3

public class ClaUtilidades {
	public static void main (String args[]){
	  if (args.length < 1 ) {
		System.out.println("Use java utilidades <#opc> [...]"+ descripcion());
		System.exit(0);
	    }
		//int opc = Integer.parseInt(args[0]);
	    Integer objInt = new Integer (args[0]);
	    int opc = objInt.intValue();
	    switch (opc) {
	    	//utiliza las clases String y StringBuffer
			case 0 : 
				System.out.println ("la clases String - StringBuffer");
		     	//crea un arreglo de 10 bytes
		     	byte ab[] = new byte [10];
		     	//convierte la cadena del segundo argumento en un entero
			 	int ini = Integer.parseInt(args[1]);
			 	
			 	//carga el arreglo de bytes iniciando en el 
			 	//valor especificado en el segundo argumento
			 	for (int i = 0 ; i < 10; i++)
			    	ab[i]=(byte)(ini+i);
			    
			    //crea un objeto String a partir del arreglo de bytes
			 	String str = new String (ab);
			 	//crea un objeto StringBuffer a partir del String
			 	StringBuffer  sb = new StringBuffer(str);
			 	//inserta la cadena ABC en el objeto StringBuffer
			 	sb.insert(5,"ABC");
			 	//imprime los objetos String y StringBuffer
			 	System.out.println("String:"+str + " StringBuffer:" + sb);
			 	break;
			//utiliza la clase Math
			case 1 : 
				
				System.out.println("la clase Math");
				//convierte la cadena del segundo argumento a un double
				double val = Double.parseDouble(args[1]);
				//imprime el seno y  el coseno del segundo argumento
				System.out.println("seno:"+Math.sin(val) +  "  coseno:" + Math.cos(val));
				break;
			//utiliza la clase Stack
			case 2 : 
				System.out.println("Java.util la clase Vector");
				//crea una pila
				Vector v = new Vector();
				//carga el vector con 5 objetos String
				for(int i = 0; i<5; i++)
			   		v.add("elemento:"+(i+1));
			   	//imprime la capacidad y el numero de elementos en el vector
			   	System.out.println("el objeto vector tiene capacidad:"+v.capacity()+" numElementos:"+ v.size());
			   	//recupera e imprime los elemento del vector
				for(int i = 0; i<5;i++)
					System.out.println(v.elementAt(i));
				//incrementa la capacidad den vector
				v.setSize(30);
				//retira todos los elementos del vector
				v.clear();
				//imprime la capacidad y el numero de elementos en el vector
			   	System.out.println("el objeto vector tiene capacidad: "+v.capacity()+" numElementos:"+ v.size());
				break;
			//para opciones especificadas diferentes de 0,1 o 2
			default: System.out.println("opción no valida");
					 System.out.println("Use java utilidades <#opc> [...]"+ descripcion());
	    }
	}
	
	public static String descripcion(){
		String aux = "\n\n#opcion: 	0 para crear un objeto String y un Objeto StringBuffer";
		aux = aux + "\nvalor: 		cualquier valor de caracter imprimible ejemplo 135";
		aux = aux + "\nejecute --> 	java Utilidades 1 135";

		aux = aux + "\n\n#opcion: 	1 para usar la clase math";
		aux = aux + "\nvalor: 		cualquier valor para calcular su raiz y su conversion a grados";
		aux = aux + "\nejecute --> 	java Utilidades 2 4";

		aux = aux + "\n\n#opcion: 	2 para usar la clase Vector de java.util";
		aux = aux + "\nvalor: 		no requerido";
		aux = aux + "\nejecute --> 	java Utilidades 3";
		return aux;
	}
	
}