He creado un programa que dentro de un array de números, revisa si son números pares, de ser pares crea un array con los pares y el anterior lo deja con los impares y donde había pares aparecen "0". Pero me piden que lo optimice porque tiene demasiados bucles, pero no se como hacerlo sin estropear el programa.
Este es el código:
Código:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package clasearray;
import java.util.Scanner;
import java.util.*;
/**
*
* @author mati
*/
public class ClaseArray {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Scanner teclado=new Scanner(System.in);
//variables
int opcion;
int [] v1;
v1 = new int[6];
/*-------------------------------------------------------------------------*/
do{
System.out.println("Introduce una opción del menu.");
verMenu();
opcion=teclado.nextInt();
switch(opcion){
case 1:
leerArray(v1);
break;
case 2:
escribeArray(v1);
break;
case 3: quitarPares(v1);
break;
case 4: ;
break;
default: System.out.println("Error" ); break;
}
}while(opcion!=4);
}
/*-------------------------------------------------------------------------*/
public static void verMenu(){
System.out.println("1. Introducir el vector");
System.out.println("2. Escribirir el vector");
System.out.println("3. Eliminar los pares");
System.out.println("4. Finalizar");
}
// método introduce valores a un vector
public static void leerArray(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+" de "+(v.length-1));
v[i]=teclado.nextInt();
}
}
// método muestra vector
public static void escribeArray( int [] array){
System.out.println("");
System.out.print("{");
for(int i=0;i<array.length;i++){
System.out.print("["+array[i]+"]");
if(i!=array.length-1) System.out.print(",");
}
System.out.println("}");
System.out.println("");
}
public static void quitarPares(int [] v){
int rest, cont=0, cont2=0;
for(int i=0;i<v.length;i++){
int div=(int)v[i];
rest=div%2;
if(rest==1){
cont+=1;
}
}
for(int i=0;i<v.length;i++){
int div=(int)v[i];
rest=div%2;
if(rest==0){
cont2+=1;
}
}
//nuevo vector para los pares
int [] vimPar;
vimPar = new int[(int)v.length];
//Introducir valores al nuevo vector
int j=0;
for(int i=0;i<v.length;i++){
if(v[i]%2==1){
vimPar[j]=v[i];
j++;
int pos=j;
}
}
//muestra vector original
System.out.println("Muestra vector original.");
escribeArray(v);
System.out.println("");
//muestra nuevo vector
System.out.println("Muestra vector impar.");
escribeArray(vimPar);
System.out.println("");
//-------------------------------------
//nuevo vector para los pares
int [] vPar;
vPar = new int[cont2];
//Introducir valores al nuevo vector
int p=0;
for(int i=0;i<v.length;i++){
if(v[i]%2==0){
vPar[p]=v[i];
p++;
}
}
//muestra vector Par
System.out.println("Muestra vector Par.");
escribeArray(vPar);
System.out.println("");
}
}