Ver Mensaje Individual
  #2 (permalink)  
Antiguo 29/06/2014, 21:32
Avatar de Italico76
Italico76
 
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: comparar variable numerica con posicion de array

Hola,

Suponte tienes este arreglo:

Código Java:
Ver original
  1. String[] cosas = { "mesa","silla","impresora","computador" };

Quieres acceder a una posicion del arreglo ?

Código Java:
Ver original
  1. int numero = 1;
  2.         System.out.println(cosas[numero]);  // accedo a un indice numero del array cosas


Quieres saber si algo existe en un arreglo ?

Código Java:
Ver original
  1. boolean existe;
  2.         existe = java.util.Arrays.asList(cosas).contains("impresora");
  3.         System.out.println(existe);


Quieres saber la posicion de algo que buscas en un arreglo ?

Código Java:
Ver original
  1. int pos;
  2.         pos = java.util.Arrays.asList(cosas).indexOf("impresora");
  3.         System.out.println("Encontrado en posicion "+pos);

<< te devuelve (-1) en caso de no ser encontrado


Analiza este ejemplo que te hice:

Código Java:
Ver original
  1. public class test {
  2.  
  3.     public static void main(String[] args) {
  4.  
  5.         String[] nombres = new String[10];
  6.         String[] cosas = { "mesa","silla","impresora","computador" };
  7.  
  8.  
  9.         int numero = 1;
  10.         System.out.println(cosas[numero]);  // accedo a un indice
  11.  
  12.         // busqueda
  13.         int pos;
  14.         pos = java.util.Arrays.asList(cosas).indexOf("impresora");
  15.         System.out.println("Encontrado en posicion "+pos);
  16.  
  17.         //otra busqueda
  18.         boolean existe;
  19.         existe = java.util.Arrays.asList(cosas).contains("impresora");
  20.         System.out.println(existe);
  21.  
  22.     }
  23.  
  24. }

Por otro lado..... tu clase Cuestionario creo deberia ser re-formulada...... y para contestar una pregunta en el foro de PHP hice algo que te podria servir...... es muy similar a Java...... creo entenderas la idea de como funciona y hacer algo parecido o aun mejor:

Código PHP:
Ver original
  1. <?php
  2.  
  3. /*
  4.     @author: Pablo Bozzolo (italico76) 
  5. */
  6. Class PreguntaCuestionario implements Countable, Iterator
  7. {
  8.     private $_pregunta = NULL;
  9.     private $_respuestas  = [];
  10.     private $_respuesta_correcta = null;
  11.  
  12.    
  13.     public function __construct($pregunta)
  14.     {
  15.         // texto de la pregunta
  16.         $this->_pregunta=$pregunta;
  17.     }
  18.        
  19.     public function getPregunta()
  20.     {
  21.         return $this->_pregunta;
  22.     }
  23.    
  24.     // alias de getPregunta
  25.     public function getNombre()
  26.     {
  27.         return $this->_pregunta;
  28.     }
  29.    
  30.     // una posible repuesta
  31.     public function addRespuesta($respuesta)
  32.     {
  33.         $this->_respuestas[] = $respuesta;
  34.         return $this;
  35.     }
  36.    
  37.     // posibles repuestas
  38.     public function addRespuestas(array $respuestas)
  39.     {
  40.         foreach ($respuestas as $respuesta)
  41.             $this->_respuestas[] = $respuesta; 
  42.            
  43.         return $this;
  44.     }
  45.        
  46.     // la respuesta considerada 'correcta', si la hay
  47.     // posicion como rango {1...N}
  48.     public function setRespuestaCorrecta($posicion)
  49.     {
  50.         $this->_respuesta_correcta = $this->_respuestas[$posicion-1];
  51.         return $this;
  52.     }
  53.    
  54.     public function getRespuestaCorrecta()
  55.     {
  56.         return $this->_respuesta_correcta;
  57.     }
  58.  
  59.     // desordena respuestas
  60.     public  function desordenar()
  61.     {
  62.         shuffle($this->_respuestas);
  63.         return $this;
  64.     }
  65.    
  66.     /* Iterator */
  67.     function rewind() {        
  68.         reset($this->_respuestas);
  69.     }
  70.  
  71.     public function current()
  72.     {
  73.         return current($this->_respuestas);
  74.     }
  75.  
  76.     public function key()
  77.     {        
  78.         return key($this->_respuestas);
  79.     }
  80.  
  81.     public function next()
  82.     {
  83.         next($this->_respuestas);        
  84.     }
  85.  
  86.     public function valid()
  87.     {  
  88.         return isset($this->_respuestas[$this->key()]);
  89.     }
  90.    
  91.     public function printMe()
  92.     {
  93.         $out = $this->getNombre()."\n\n";
  94.    
  95.         foreach ($this->_respuestas as $option)        
  96.             $out .= "( ) $option\n";
  97.        
  98.         $out .= "\n(RTA: ".$this->getRespuestaCorrecta().")\n\n";          
  99.        
  100.         return $out;   
  101.     }
  102.    
  103.     public function __toString()
  104.     {      
  105.         return $this->printMe();       
  106.     }
  107.    
  108.     /* Countable */
  109.     public function count()
  110.     {  
  111.         return count($this->_respuestas);
  112.     }      
  113.  
  114. }
  115.  
  116.  
  117. Class Cuestionario implements Countable, Iterator
  118. {
  119.     private $_nombre = NULL;
  120.     private $_preguntas= array();
  121.     private $_mode = NULL;
  122.        
  123.     /*
  124.         @param nombre del cuestionario     
  125.         @return void   
  126.     */ 
  127.     public function __construct($nombre)
  128.     {          
  129.         $this->_nombre=$nombre;
  130.     }
  131.    
  132.     public function getNombre()
  133.     {
  134.         return $this->_nombre;
  135.     }
  136.  
  137.     public function addPregunta(PreguntaCuestionario $pregunta)
  138.     {  
  139.         $this->_preguntas[]= $pregunta;    
  140.         return $this;
  141.     }
  142.  
  143.     // desordena preguntas
  144.     public function desordenar($tambien_respuestas=true)
  145.     {
  146.         shuffle($this->_preguntas);
  147.         if ($tambien_respuestas)
  148.             foreach ($this->_preguntas as $pregunta)
  149.                 $pregunta->desordenar();
  150.        
  151.         return $this;
  152.     }
  153.  
  154.     /* Iterator */
  155.     public function rewind() {        
  156.         reset($this->_preguntas);
  157.     }
  158.  
  159.     public function current()
  160.     {
  161.         return current($this->_preguntas);
  162.     }
  163.  
  164.     public function key()
  165.     {        
  166.         return key($this->_preguntas);
  167.     }
  168.  
  169.     public function next()
  170.     {
  171.         next($this->_preguntas);        
  172.     }
  173.  
  174.     public function valid()
  175.     {  
  176.         return isset($this->_preguntas[$this->key()]);
  177.     }
  178.    
  179.     /* Countable */
  180.     public function count()
  181.     {  
  182.         return count($this->_preguntas);
  183.     }
  184.    
  185.        
  186.     // para consola
  187.     public function __toString()
  188.     {
  189.         $out = "Cuestionario: {$this->_nombre}\n\n";
  190.        
  191.         foreach ($this->_preguntas as $pregunta)           
  192.             $out .= printf ("%s\n",$pregunta->printMe());
  193.        
  194.         return $out;   
  195.     }
  196.  
  197.     // para generar subgrupos de preguntas de N en M
  198.     public function getN($n)
  199.     {
  200.         if ($n>count($this->_preguntas))
  201.             throw new Expcetion ("No hay tantas ($n) preguntas!");
  202.        
  203.         for ($i=0;$i<$n;$i++)
  204.             $copia[] = $this->_preguntas[$i];
  205.            
  206.         return $copia;
  207.     }
  208.    
  209. }
  210.  
  211. // creo Cuestionario:
  212.  
  213. $pregs = new Cuestionario("America");
  214.  
  215. $pregs  ->addPregunta(
  216.             (new PreguntaCuestionario("Cuando los europeos descubrieron oficialmente de America ?"))
  217.             ->addRespuestas([1942,1542,1492])
  218.             ->setRespuestaCorrecta(3)
  219.             )
  220.  
  221.         ->addPregunta( 
  222.             (new PreguntaCuestionario("Quien era Atahuala ?"))
  223.             ->addRespuestas(["un espanol conquistador","un jeque americano"])      
  224.             ->setRespuestaCorrecta(2)
  225.             )
  226.            
  227.         ->addPregunta( 
  228.             (new PreguntaCuestionario("Que fue causal de mas muerte de indigenas?"))
  229.             ->addRespuestas(["los asesinatos","las enfermedades traidas desde Europa"])    
  230.             ->setRespuestaCorrecta(2)
  231.             )  
  232.        
  233.         ->addPregunta( 
  234.             (new PreguntaCuestionario("Con que nombre se celebra el dia del descubrimiento?"))
  235.             ->addRespuestas(["Dia de la Raza","Dia del amigo","Dia del descrumiento"])     
  236.             ->setRespuestaCorrecta(1)
  237.             )      
  238.            
  239.         ->addPregunta( 
  240.             (new PreguntaCuestionario("De que nacionalidad era Cristobal Colon ?"))
  241.             ->addRespuestas(["No se sabe con certeza","italiano","portugues","ingles"])    
  242.             ->setRespuestaCorrecta(1)
  243.            
  244.             )->desordenar();
  245.  
  246.            
  247. // Preparacion de examenes como variaciones del mismo cuestionario
  248.  
  249. $examenes = [];
  250. $examenes[] = $pregs->desordenar()->getN(3);
  251. $examenes[] = $pregs->desordenar()->getN(3);
  252. $examenes[] = $pregs->desordenar()->getN(3);
  253.  
  254. $nombre = $pregs->getNombre();
  255.  
  256. foreach ($examenes as $key => $examen)
  257. {
  258.     echo "<h3>Cuestionario: $nombre (version ".($key+1).")</h3>";
  259.    
  260.     foreach ($examen as $pregunta)
  261.     {  
  262.         echo "<span>".$pregunta->getNombre()."</span><p/>";
  263.    
  264.         foreach ($pregunta as $option)         
  265.             echo "<input  type=\"radio\" name=\"{$nombre}[]\" value=\"\"/>{$option}</option><p/>";     
  266.             //echo $pregunta->getRespuestaCorrecta();
  267.         echo "<br/>";  
  268.     }
  269.     echo "<p/>---------------------------------------------<p/>";
  270. }
__________________
Salu2!

Última edición por Italico76; 29/06/2014 a las 22:07