ChronoCross Posted June 9, 2012 Report Share Posted June 9, 2012 Holas miren les cuento mi duda tengo un arreglo M y debo tener un arreglo A el cual cuando encuentre un numero 10 agrege un 1 y un 0 en base de M ejemplo m = 10 A= 1,10,0 pense en usar if (m==10) para que que detectara y agregara, pero esto cambiaria el arreglo y la verdad nosé como inicializar el arreglo A, no pido codigo sino alguna idea xd mi pseudo codigo xd int m []= {4,6,10,3,10,5,7,12}; for (int i=0;i<8;i++) { if (m[i]!=10) { int g=m[i]; // } if (m[i]==10) { int f=1,10,0; // } } int a []= {n,n,f,n,f,n,n,n}; toda idea es bienvenida c: Link to comment Share on other sites More sharing options...
Maurox? Posted June 9, 2012 Report Share Posted June 9, 2012 Creo que esta es la forma mas correcta. int[] m = {4,6,10,3,10,5,7,12}; List a = new ArrayList(); for(int i = 0; i < m.length; i++) { if(m[i] == 10) { a.add(1); a.add(10); a.add(0); } } System.out.println(a); } Link to comment Share on other sites More sharing options...
ChronoCross Posted June 9, 2012 Author Report Share Posted June 9, 2012 (edited) averiguando bien la funcion y agregando codigo pude hacer lo que buscaba vale vale choco te pasaste, pero tengo una advertencia al compilarlo, pero igual puedo correrlo, me podrias decir porfas a que se debe? Note: C:Users*Documentsejemz.java uses unchecked or unsafe operations.Note: Recompile with -Xlint:unchecked for details. import java.util.ArrayList; int[] m = {4,6,10,3,10,5,7,12}; ArrayList a = new ArrayList(); for(int i=0;i<m.length;i++) { if(m[i]!=10) { a.add(m[i]); } if(m[i]==10) { a.add(1); a.add(10); a.add(0); } System.out.println(a); } Edited June 9, 2012 by ChronoCross Link to comment Share on other sites More sharing options...
Ghost_Sigma Posted June 9, 2012 Report Share Posted June 9, 2012 averiguando bien la funcion y agregando codigo pude hacer lo que buscaba vale vale choco te pasaste, pero tengo una advertencia al compilarlo, pero igual puedo correrlo, me podrias decir porfas a que se debe? Note: C:Users*Documentsejemz.java uses unchecked or unsafe operations.Note: Recompile with -Xlint:unchecked for details. import java.util.ArrayList; int[] m = {4,6,10,3,10,5,7,12}; ArrayList a = new ArrayList(); for(int i=0;i<m.length;i++) { if(m[i]!=10) { a.add(m[i]); } if(m[i]==10) { a.add(1); a.add(10); a.add(0); } System.out.println(a); } debe ser por que al ArrayList le faltaron los diamantes <>, con los diamantes especificas el tipo de elementos que contendrá tu ArrayList.prueba con: ArrayList<int> a = new ArrayList<>(); Si mi memoria no falla, así sería el código y con eso se arreglaría. Link to comment Share on other sites More sharing options...
ChronoCross Posted June 9, 2012 Author Report Share Posted June 9, 2012 (edited) ArrayList<int> a = new ArrayList<>(); Si mi memoria no falla, así sería el código y con eso se arreglaría. mm gracias perrin pero me tira : C:Users*Documentsejemz.java:22: error: unexpected type ArrayList<int> a = new ArrayList<>(); ^ required: reference found: intC:Users*Documentsejemz.java:22: error: unexpected type ArrayList<int> a = new ArrayList<>(); ^ required: class found: <E>ArrayList<E> where E is a type-variable: E extends Object declared in class ArrayList2 errors Process completed. la verdad es que no cacho, pk recien estoy en los arreglos xD!, o tal vez me falta declarar algo mas o:? Edited June 9, 2012 by ChronoCross Link to comment Share on other sites More sharing options...
susodicho Posted June 9, 2012 Report Share Posted June 9, 2012 :mmm: Si entendí bien, estás recién comenzando a ver arreglos en Java. Si es así, entonces no creo que tengas que utilizar la clase ArrayList, sino sólo arreglos comunes.Así que, según yo, deberías hacerlo en 2 pasos:Recorrer el arreglo M y contar cuántos valores iguales a 10 hay.Sabiendo cuántos valores son iguales a 10, puedes declarar el nuevo arreglo A (sabes cuántos elementos tendrá). y ahora puedes empezar a asignarle los valores al nuevo arreglo A, o sea, le vas copiando los valores desde el arreglo M.Porsiaca, el largo del arreglo A será: LARGO(A) = LARGO(M) + (OCURRENCIAS * 2) donde OCURRENCIAS es cuántos valores iguales a 10 encontraste en el arreglo M. Link to comment Share on other sites More sharing options...
ChronoCross Posted June 9, 2012 Author Report Share Posted June 9, 2012 Recorrer el arreglo M y contar cuántos valores iguales a 10 hay.Sabiendo cuántos valores son iguales a 10, puedes declarar el nuevo arreglo A (sabes cuántos elementos tendrá). gracias estimado, pero ummm intente hacer tu idea pero me da error, 4 6 0 3 0 5 7 12 Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 8at ejemplos.main(ejemplos.java:34) alguna sugerencia ? int sum; int cont=0; int[] m = {4,6,10,3,10,5,7,12}; for(int i=0;i<m.length;i++) { if (m[i]==10) cont=cont+2; } sum=cont+m.length; //System.out.println(sum); int a[] = new int [sum]; for (int i=0;i<a.length;i++){ if (m[i]!=10){ a[i]=m[i];} if (m[i]==10){ a[i]=1;} if (a[i]==1){ a[i]++; a[i]=10;} if (a[i]==10){ a[i]++; a[i]=0; } System.out.print(a[i]+" "); } Link to comment Share on other sites More sharing options...
susodicho Posted June 9, 2012 Report Share Posted June 9, 2012 El largo del arreglo A es mayor o igual al largo de M; por lo tanto, el ciclo for se pasa de largo, porque estás usando la longitud de A para recorrer el arreglo M :tonto:Además tienes que usar if...else (tú estás usando 2 if), o sea: if (m[i] != 10){ // copiar valor desde arreglo M } else{ // En caso contrario (m[i] es igual a 10) // insertar un 1 // copiar valor desde arreglo M // insertar un 0 } Lo otro, tienes que usar un índice para cada arreglo, es decir, el índice del ciclo for te sirve para recorrer el arreglo M, y necesitas otro índice para ir asignándole valores al arreglo A.Además recuerda que el arreglo A está "vacío", así que sólo debes asignarle valores dentro del ciclo for, no consultar si algún elemento tiene determinado valor (ya que no han sido asignados todavía). Link to comment Share on other sites More sharing options...
Maurox? Posted June 11, 2012 Report Share Posted June 11, 2012 averiguando bien la funcion y agregando codigo pude hacer lo que buscaba vale vale choco te pasaste, pero tengo una advertencia al compilarlo, pero igual puedo correrlo, me podrias decir porfas a que se debe? Note: C:Users*Documentsejemz.java uses unchecked or unsafe operations.Note: Recompile with -Xlint:unchecked for details. import java.util.ArrayList; int[] m = {4,6,10,3,10,5,7,12}; ArrayList a = new ArrayList(); for(int i=0;i<m.length;i++) { if(m[i]!=10) { a.add(m[i]); } if(m[i]==10) { a.add(1); a.add(10); a.add(0); } System.out.println(a); } Esas son advertencias de compilador, cosas de versiones. Te di el ejemplo con ArrayList (Colecciones) por un tema de costumbre. Aquí te dejo el ejemplo en Array del mismo que te di anteriormente en Colecciones, ya que veo que algunos respondieron algo sin dar un ejemplo claro. Hay otras formas, pero hacen lo mismo. int[] m = {4,6,10,3,10,5,7,12}; int contador = 0; for(int i = 0; i < m.length; i++) { if(m[i] == 10 ) { contador = contador + 3; } } int[] a = new int[contador]; for(int i = 0; i < m.length; i++) { if(m[i] == 10) { for(int j = 0; j < a.length; j = j + 3) { a[j] = 1; a[j + 1] = 10; a[j + 2] = 0; } } } for( int x = 0; x < a.length; x++) { System.out.println(a[x]); } Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now