Ayuda Matriz java!

Iniciado por fosh, 27 Abril 2011, 07:23 AM

0 Miembros y 1 Visitante están viendo este tema.

fosh

Hola que tal estoy haciendo esta matriz, lo que tengo que hacer es llenarla con numero primos, y si no es primo me mande un mensaje, pero que no se guarde en la matriz, mi problema es que si no es numero primo se guarda como un 0 ¿como puedo evitar eso?

espero y me puedan ayudar aquí esta mi código;

Código (java) [Seleccionar]
import java.io.*;
class pri{

int Matriz[][];

static String f(){
BufferedReader fosh = new BufferedReader (new InputStreamReader(System.in));
String dato="";
try{
dato=fosh.readLine();
}catch(IOException error){};

return dato;
}//fin del metodo

public void llenado(){
int num=0;
Matriz = new int [2][4];
for(int x=0; x<2; x++){
for(int y=0; y<4; y++){
try
{
System.out.print("Introduce un numero: "+(x+1)+"......");
num = Integer.parseInt(f());
int count = 0;
for (int i = 1; i <= num; i++)
{
if (num%i == 0)
{
count++;
}
}
if (count <= 2){
if(num>0){
Matriz [x] [y]=num; // aqui es matriz en la posicion x y y solo que sale un cuadro negro
}
System.out.println("El numero es primo");
}else{
System.out.println("El numero NO es primo");
}
}catch(Exception e)
{
System.out.println("Ha ocurrido un error al leer el dato...");
}
}
}
}//fin del metodo

public void imprimir(){
for(int x=0; x<2;x++){
for(int y=0; y<4;y++){
System.out.print(Matriz[x][y]+"\t");
}
System.out.println();
}
}

public static void main(String args[]){
pri fosh = new pri();
fosh.llenado();
fosh.imprimir();
}//fin del main
}//fin de la clase


saludos!!

NetJava

Buenas, espero que esto te ayude, en vez de mover la matriz con los bucles pon una variable a la que le vayas sumando 1 cada vez que se pase por el bucle y sea primo tu número, y esa la utilizas para mover tu matriz, así no dependes del bucle para mover la matriz.

Saludos.

Valkyr

Una de dos o haces como dice NetJava o dentro de los dos bucles for incluyes un bucle while que haga lo siguiente: lees un número, haces los cálculos necesarios para saber si es primo o no, entonces en la condición del while haces que continúe la ejecución (es decir, vuelva a pedir un número y vuelvas a comprobar si es primo) si no cumple la condición (es primo) lo introduces en la matriz y listo. A la hora de mostrar el mensaje por pantalla podrías hacerlo dentro del bucle while pero entonces tendrías que hacer una comprobación de si es primo fuera. El algoritmo quedaría así más o menos:


Código (javascript) [Seleccionar]
public void llenado(){

for(int x=0;x<.........)
     for(int y=0;y<........)
         leer un número;
         calculos para saber si es primo;
         while(!esPrimo){
                 System.out.println("No es primo");
                 lees otro número de teclado;
                 calculos para saber si es primo;
        }
        Introduces el numero leido en la matriz;
}


Espero te sirva!!!!! saludos

fosh

Gracias la verdad las dos respuestas me sirvieron bastante, ya me salio el problema como yo quería gracias de antemano...

saludos y gracias por ayudarme de nuevo...