Ver Mensaje Individual
  #3 (permalink)  
Antiguo 04/12/2013, 19:31
Avatar de cyrux_cob
cyrux_cob
 
Fecha de Ingreso: febrero-2007
Mensajes: 28
Antigüedad: 17 años, 10 meses
Puntos: 1
Respuesta: Duda en JAVA, comportamiento raro en un FOR

Saludos, el problema del código que has hecho no está en el for lo que pasa es que después que elijas una opción diferente de 9 como la variable opción no cambiará el while se mantiene infinito, y por eso cuando eliges la opción 1 o 2, e introduzca los datos, vuelve a repetirse el ciclo while y como la variable opcion está fija en uno de esos dos valores como es lógico te da la impresión de que el ciclo for se repite infinitamente pero no es así sino el while.
La solución está en que debes poner la llamada al método verMenu() dentro de un ciclo do while.

Quedaría más o menos así

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

import java.util.*;
/**
*
* @author Joan
*/
public class VectorTridimensional {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {

Scanner teclado=new Scanner(System.in);
int opcion;
int [] v1;
v1 = new int[3];
int [] v2;
v2 = new int[3];


/*-------------------------------------------------------------------------*/
do{

System.out.println("Introduce una opción del menu.");
verMenu();
opcion=teclado.nextInt();


switch(opcion){

case 1:
introVector(v1);
muestraVector(v1);
break;

case 2:
introVector(v2);
break;

case 3: ; break;
case 4: ; break;
case 5: ; break;
case 6: ; break;
case 7: ; break;
case 8: ; break;
case 9: ; break;
//default: System.out.println("Error" ); break;

}
}while(opcion!=9);


}

/*-------------------------------------------------------------------------*/

public static void verMenu(){
System.out.println("1. Introducir el primer vector");
System.out.println("2. Introducir el segundo vector");
System.out.println("3. Calcular la suma");
System.out.println("4. Calcular la diferencia");
System.out.println("5. Calcular el producto vectorial");
System.out.println("6. Calcular el producto escalar");
System.out.println("7. Calcular el ángulo (en grados) entre ellos");
System.out.println("8. Calcular la longitud");
System.out.println("9. Finalizar");
}

// método introduce valores a un vector
public static void introVector(int [] v){
Scanner teclado=new Scanner (System.in);


for(int i=0;i<v.length;i++){
System.out.println("Introduce un valor para la posición "+i);
v[i]=teclado.nextInt();
}

}

// método muestra vector
public static void muestraVector(int [] v){

for(int i=0;i<v.length;i++){
System.out.println(v[i]);
}

}
}