[Hilo Oficial II] Java

1, 2, 3, 4, 516
A ver si me echais un cable. Tengo que crear un tablero con sus casillas. Asique he hecho dos clases: casilla y yablero.
public class Casilla{
  public static final char NEGRO='N';
  public static final char BLANCO='B';
  private char color;
 
  public Casilla(char c){
    color=c;
  }
  public char getColor(){
    return color;
  }
  public void setColor(char c){
    color=c;
  }
  public boolean iguales(Casilla c){
    if(getColor()==c.getColor()) return true;
    else return false;
  }
}


public class Tablero{
 
  private Casilla tablero[][];
 
  public Tablero(int dimension){
    Casilla[][] tablero=new Casilla [dimension][dimension];
    Casilla casB=new Casilla('B');
    Casilla casN=new Casilla('N');
    tablero[0][0]=casB;
    for(int i=0; i<tablero.length;i++){
      for(int j=0; i<tablero[i].length;j++){
   if((i+j)%2==0) tablero[i][j]=casB;
   else tablero[i][j]=casN;
      }
    }
  }
 
  public Casilla[][] getTablero(){
    return tablero;
  }

}


Y el main para probarlo
public class PruebaTablero{
  public static void main(String args[]){
    Casilla tab1[][];
    Tablero tab=new Tablero(8);
    tab1=tab.getTablero();
    for (int i=0; i<tab1.length;i++){
      for(int j=0;j<tab1.length;j++){
   System.out.println(tab1[i][j]);
      }
    }
  }
}


Pero es que me escupe esto al ejecutarlo
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 8
        at Tablero.<init>(Tablero.java:12)
        at PruebaTablero.main(PruebaTablero.java:4)


Que hay mal? Me estoy volviendo loco!
Pues creo que es por esto: "for(int j=0; i<tablero[i].length;j++){". La primera "i" que aparece deberia ser una "j".
jomofer escribió:Pues creo que es por esto: "for(int j=0; i<tablero[i].length;j++){". La primera "i" que aparece deberia ser una "j".


vale, cambiado y...
public class Tablero{
 
  private Casilla tablero[][];
 
  public Tablero(int dimension){
    Casilla[][] tablero=new Casilla [dimension][dimension];
    Casilla casB=new Casilla('B');
    Casilla casN=new Casilla('N');
    tablero[0][0]=casB;
    for(int i=0; i<tablero.length;i++){
      for(int j=0; j<tablero[i].length;j++){
   if((i+j)%2==0) tablero[i][j]=casB;
   else tablero[i][j]=casN;
      }
    }
  }
 
  public Casilla[][] getTablero(){
    return tablero;
  }

}
   


public class Casilla{
  public static final char NEGRO='N';
  public static final char BLANCO='B';
  private char color;
 
  public Casilla(char c){
    color=c;
  }
  public char getColor(){
    return color;
  }
  public void setColor(char c){
    color=c;
  }
  public boolean iguales(Casilla c){
    if(getColor()==c.getColor()) return true;
    else return false;
  }
}


public class PruebaTablero{
  public static void main(String args[]){
    Casilla tab1[][];
    Tablero tab=new Tablero(8);
    tab1=tab.getTablero();
    for (int i=0; i<tab1.length;i++){
      for(int j=0;j<tab1[i].length;j++){
   System.out.println(tab1[i][j].getColor());
      }
    }
  }
}


Y ahora escupe:
Exception in thread "main" java.lang.NullPointerException
        at PruebaTablero.main(PruebaTablero.java:6)
Me ha costado verlo XD. En la clase Tablero, rellenas una variable "tablero", pero esa no es la misma que su atributo de arriba (que lo llamas igual).

Quedaria asi:
public class Tablero{

  private Casilla tablero[][];

  public Tablero(int dimension){
    tablero=new Casilla [dimension][dimension];
    Casilla casB=new Casilla('B');
    Casilla casN=new Casilla('N');
    tablero[0][0]=casB;
    for(int i=0; i<tablero.length;i++){
      for(int j=0; j<tablero[i].length;j++){
   if((i+j)%2==0) tablero[i][j]=casB;
   else tablero[i][j]=casN;
      }
    }
  }

  public Casilla[][] getTablero(){
    return tablero;
  }

}


Edito. Te lo pongo algo mejor:

public class Tablero{

   private Casilla tablero[][];

   public Tablero(int dimension){
      
      this.tablero=new Casilla [dimension][dimension];
      
      for(int i=0; i<tablero.length;i++){
           for(int j=0; j<tablero[i].length;j++){
            if((i+j)%2==0){
               tablero[i][j]=new Casilla('B');
            }
            else{
               tablero[i][j]=new Casilla('N');
            }
           }
      }

   }

   public Casilla[][] getTablero(){
      return tablero;
   }

}


Antes tu rellenabas cada casilla con la misma referencia. Es mejor crear un objeto nuevo para que sean diferentes.
jomofer escribió:Me ha costado verlo XD. En la clase Tablero, rellenas una variable "tablero", pero esa no es la misma que su atributo de arriba (que lo llamas igual).

Quedaria asi:
public class Tablero{

  private Casilla tablero[][];

  public Tablero(int dimension){
    tablero=new Casilla [dimension][dimension];
    Casilla casB=new Casilla('B');
    Casilla casN=new Casilla('N');
    tablero[0][0]=casB;
    for(int i=0; i<tablero.length;i++){
      for(int j=0; j<tablero[i].length;j++){
   if((i+j)%2==0) tablero[i][j]=casB;
   else tablero[i][j]=casN;
      }
    }
  }

  public Casilla[][] getTablero(){
    return tablero;
  }

}


Edito. Te lo pongo algo mejor:

public class Tablero{

   private Casilla tablero[][];

   public Tablero(int dimension){
      
      this.tablero=new Casilla [dimension][dimension];
      
      for(int i=0; i<tablero.length;i++){
           for(int j=0; j<tablero[i].length;j++){
            if((i+j)%2==0){
               tablero[i][j]=new Casilla('B');
            }
            else{
               tablero[i][j]=new Casilla('N');
            }
           }
      }

   }

   public Casilla[][] getTablero(){
      return tablero;
   }

}


Antes tu rellenabas cada casilla con la misma referencia. Es mejor crear un objeto nuevo para que sean diferentes.


Gracias! De verdad, que chorrada! Yo tampoco me he percatado!
(mensaje borrado)
que buen hilo, y yo sin darme cuenta. En bibliografia recomiendo "Aprenda JAVA como si estuviera en primero"

vreo que es legal si no me lo decis y lo quito
http://www.tecnun.es/asignaturas/Informat1/ayudainf/aprendainf/Java/Java2.pdf


Tengo un problema, estoy intentando hacer una aplicacion con JAVA, pero el problema es que tengo un panel y dentro de este quiero incorporarle otro, pero no se como decir que me lo ponga en una posicion en concreto.

por cierto se hacerlo con el netbeans pero no me interesa hacerlo de esta forma, asi que no me contesteis usa el netbeans o cualquier otro IDE que te permita dibujar de forma sencilla la aplicacion.Tambien he intentado ver como lo hace el netbeans pero no lo veo

Clase jugada:
public class Jugada extends JPanel{

    GroupLayout GL = null;

    public Jugada() {
        setBorder(javax.swing.BorderFactory.createTitledBorder("MiJugada"));
        setName("MiJugadaName");
        GL = new javax.swing.GroupLayout(this);
        this.setLayout(GL);
        System.out.println(this.getX());
        GL.setHorizontalGroup(
            GL.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 244, Short.MAX_VALUE)
        );
        GL.setVerticalGroup(
            GL.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 31, Short.MAX_VALUE)
        );
    }
}


Y la clase principal (pongo solo un metodo, los otros son irrelevantes)
public class MenuPrincipalView extends JPanel {
        [...]
        private void initCustomComponent(Component C) {
           javax.swing.GroupLayout layout = (GroupLayout) this.getLayout();
           layout.setHorizontalGroup(
              layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                 .addGroup(layout.createSequentialGroup()
                 .addContainerGap()
                 .addComponent(C, 100, 500, 1000)
                 .addContainerGap(313, Short.MAX_VALUE))
           );
           layout.setVerticalGroup(
              layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
              .addGroup(layout.createSequentialGroup()
              .addContainerGap()
              .addComponent(C, 100, 500, 1000)
              .addContainerGap(384, Short.MAX_VALUE))
          );
       }
[...]
}



Resultado:
Imagen


En fin, no se como solucionarlo.


zaius5 escribió:Tengo una nueva duda y voy a intentar explicarme lo mejor posible
-Creo una clase con un atributo boolean y dos metodos que cambien ese atributo a false o true
-Creo otra clase,tiene como unico atributo un array de objetos de la clase creada anteriormente
ahora intento cambiar el atributo de uno de los objetos del array(osea cambiar el atributo de la primera clase creada)pero al cambiar uno me los cambia todos ,a ver si alguien lo entiende y me explica el porque de que secambien todos ;)


Recuerda que en java todo es un puntero, y probablemente cada elemento del array apunte a un mismo objeto.
Tenemos la clase:
Class Entero {
      public int i = 0;

      public Entero(int n) {
          i = n;
      }
}

Ejemplo de mal hecho:
Entero ent = new Entero(123);
Entero[] lista = new Entero[5];
for (int i  = 0; i < lista.length; i++)
    lista[i] = entero;
lista[0].i = 12;


Como cada elemento del array apunta al mismo objeto, entonces todos son modificados

El mismo bien hecho
Entero[] lista = new Entero[5];
for (int i  = 0; i < lista.length; i++)
    lista[i] = new Entero(123);
lista[0].i = 12;



En este caso cada uno apunta un objeto distinto, entonceslos demas objetos no son modificados
Perdonad que me entrometa en un hilo ya avanzado, pero es que llevo algún tiempo queriendo aprender o Java a C#. El problema que me surge es que de C# no hay ningún libro interesante en castellano y los que hay en inglés son autenticos ladrillos de más de 1000 páginas que me apetece leer sin no tener asentados los conocimientos de la POO en catellano.

Así pues, de momento estoy buscando a ser posible un libro de Java, pero que comience explicando la POO y luego vaya introduciendose poco a poco en el lenguaje Java. Empecé a leerme el libro Head First Object Oriented Analysis and Design, pero ya para empezar empiezan diciendo que saber algo de Java es fundamental para seguir el libro. Así pues, descartado.

¿Qué os parecen los libros Piensa en Java y Cómo Programar en Java? ¿Cual me aconsejais para empezar y que empiece hablando de la POO? ¿Algún libro más actual que éstos y que merezca igualmente la pena para empezar?

Por cierto, recuerdo que hace unos meses empecé a leerme el libro de Piensa en Java y lo dejé casi al comienzo, porque tenía una traducción un tanto extraña. Ejemplo: "Este capítulo es material de fondo y suplementario. Mucha gente no se siente cómoda vadeando la programación orientada al objeto sin entender el cuadro grande primero. Así, hay muchos conceptos que se introducen aquí para darle una descripción sólida de OOP. Sin embargo, la gente puede no comprender los conceptos del cuadro grande hasta el heber visto algo del mecanismo primero; esta gente puede empantanarse y perderse sin un cierto código para conseguir meter sus manos." :-? :-? ¿Mande? :-|

Un saludo y gracias por todo.

ACTUALIZO: Acabo de mirar el Core Java que aconsejais y no tiene mala pinta. ¿Es fácil para empezar?
sobre C# hay un libro que me parece que se llama "Aprenda C# en 24 horas", tiene bastantes ejemplos y muy bien explicado, aunque antes de aprender C# es mejor aprender primero JAVA, ayuda bastante.

Piensa en JAVA a mi me ayudo, lo que yo lo lei en ingles (Prefiero leer este tipo de libros en ingles, para evitar problemas de traduccion)

Por cierto que eso del cuadro grande?
xgc1986 escribió:Tengo un problema, estoy intentando hacer una aplicacion con JAVA, pero el problema es que tengo un panel y dentro de este quiero incorporarle otro, pero no se como decir que me lo ponga en una posicion en concreto.

No sé si se puede fijar manualmente la posición de un panel, nosotros en clase lo que hacíamos era crear un container y añadir paneles a ese contenedor. Determinabamos una distribucion para el contenedor y otra para los paneles dependiendo de lo que queríamos poner...
Flanders escribió:Perdonad que me entrometa en un hilo ya avanzado, pero es que llevo algún tiempo queriendo aprender o Java a C#. El problema que me surge es que de C# no hay ningún libro interesante en castellano y los que hay en inglés son autenticos ladrillos de más de 1000 páginas que me apetece leer sin no tener asentados los conocimientos de la POO en catellano.

Así pues, de momento estoy buscando a ser posible un libro de Java, pero que comience explicando la POO y luego vaya introduciendose poco a poco en el lenguaje Java. Empecé a leerme el libro Head First Object Oriented Analysis and Design, pero ya para empezar empiezan diciendo que saber algo de Java es fundamental para seguir el libro. Así pues, descartado.

¿Qué os parecen los libros Piensa en Java y Cómo Programar en Java? ¿Cual me aconsejais para empezar y que empiece hablando de la POO? ¿Algún libro más actual que éstos y que merezca igualmente la pena para empezar?

Por cierto, recuerdo que hace unos meses empecé a leerme el libro de Piensa en Java y lo dejé casi al comienzo, porque tenía una traducción un tanto extraña. Ejemplo: "Este capítulo es material de fondo y suplementario. Mucha gente no se siente cómoda vadeando la programación orientada al objeto sin entender el cuadro grande primero. Así, hay muchos conceptos que se introducen aquí para darle una descripción sólida de OOP. Sin embargo, la gente puede no comprender los conceptos del cuadro grande hasta el heber visto algo del mecanismo primero; esta gente puede empantanarse y perderse sin un cierto código para conseguir meter sus manos." :-? :-? ¿Mande? :-|

Un saludo y gracias por todo.

ACTUALIZO: Acabo de mirar el Core Java que aconsejais y no tiene mala pinta. ¿Es fácil para empezar?


Sin duda yo te recomendaré usar C#, pero si quieres aprender Java, En vez del Head First OOA&D como estabas leyendo (obra maestra de libro, pero no para aprender Java). Leete el Head First Java, probablemente el mejor libro de Java del mercado.
Para aprender a programar, en mi opinion C# es contraindicado, ya que el visual studio lohace todo por ti, con JAVA practicamente es lo mismo si usas un IDE, pero C# es una clara copia de JAVA per mejorada. Si de verdad quieres aprender a programar te recomiendo utilizar C++, una vez aprendido memoria dinamica y OOP, entonces pasar a JAVA y aprendido polimorfismo, herencia, interfaces, etc. passar a C# para aprender a trabajar con ventanas y cosas asi.
xgc1986 escribió:Para aprender a programar, en mi opinion C# es contraindicado, ya que el visual studio lohace todo por ti, con JAVA practicamente es lo mismo si usas un IDE, pero C# es una clara copia de JAVA per mejorada. Si de verdad quieres aprender a programar te recomiendo utilizar C++, una vez aprendido memoria dinamica y OOP, entonces pasar a JAVA y aprendido polimorfismo, herencia, interfaces, etc. passar a C# para aprender a trabajar con ventanas y cosas asi.


Lo que es realmente contradictorio es eso de C++ -> Java -> C#. O te quedas con Java o te quedas con c#, no es ningún camino de la evolución ni nada parecido.

Ni Visual Studio te lo hace todo ni Eclipse te lo hace todo con Java. Que yo sepa a mi Visual Studio no me crea las clases que necesito ni me implementa los patrones que necesito, además de que tampoco pasa mis ideas a E/R y posteriormente a mssql. Un IDE es una ayuda, es bueno para refactorizar, para hacer debugging, para ver el estado de tu GUI / WEB sin ejecutar nada. Pero hacer tu trabajo? No.

No me gusta entrar en debates de Java VS C# ni nada. Pero el que quiere ver su futuro con Swing / J2EE / etc, que pille Java con sus pros y sus contras, el que quiera ver su futuro con ASP.NET / Silverlight / etc, pues C#. Aunque de todos modos, la programación es un medio y no un fin, o sea, aprender a programar es el fin, el lenguaje que elijas es el medio, porque cuando llegas al fin, dará igual el lenguaje porque podrás programar con todos :)
a mi si java es mejor que c# o viceversa tambien me la suda.

no me refiero a la hora de hacer clases ni patrones. pero cuando utilizas un IDE, y llamas a un metodo que no existe, te lo crea y lo mismo con los atributos, con el control+espacio te busco te los candidatos posibles

Programar con c/c++ te enseña muy bien entender el funcionamiento de un programa muchisimo mejor que JAVA o C#, ya que ni JAVA ni C# te enseñan a manejar memoria dinamica por ejemplo. Ademas trabajando con Eclipse / netbeans / Studio te suelen marcar muy bien los errores por lo que me encuentro mucha gente haciendo errores de programacion por que el IDE se lo marca. Luego he visto esta gente en la universidad progrmando con el gedit(un notepad de windows pero mejor) y luego no le compila o el programa y estan demasiado tiempo para ver un simplpe punto y coma.

Actualemente se hacen conferencias que en muchos lugares que tendrian que enseñar a programar, lo que hacen te enseñana a utilizar un lenguaje con un IDE, y que salen al mercado con un nivel de programacion muy bajo.

Por cierto lo de
C++ -> JAVA -> C#

es una recomendacion, es el camino que yo segui y aprender a utilizar C# me llevo un par de horas a programar igual que en JAVA, y no es que sea bueno sino que C# es una copia mejorada de JAVA (Tiene mas cosas en comun con JAVA que no con C#). Actualmente utilizo: java y c++ sobretodo entre otros
Cambiando de tema:
para ver vuestros progesos recomiendo esta pagina http://uva.onlinejudge.org/, es de la universidad de valladolid no es necesario matricularos, es gratuito. son ejercicion y podeis hacerlo en c++, ansi C, JAVA, Pascal
Hola, gracias por las sugerencias, pero paso de C++. No quiero ver más programación estructurada que luego vienen los lios, quiero pasar ya a la programación en objetos que es lo que me interesa. Y me da igual si en C++ se pueden crear objetos o lo que sea, no quiero un lenguaje tan cruel para programar, donde tienes que liberar memoria y utilizar punteros a tutiplen.

En cuanto a C# VS Java, mi intención era aprender C# porque lo veo un lenguaje mucho más moderno y que pule todos los defectos que tiene Java. Fijaos que en dos libros de Java, los propios autores decían en el Prologo que C# había adelantado a Java. Si los propios autores de los libros lo indican, es un indicio de que Java se ha quedado un poco estancado.

De todas formas sigo buscando un libro de C# en condiciones que no sea un tochazo y que me entere de lo básico, de Java encuentro varios pero de C# casi ninguno. Miraré ese de C# en 24 horas, a ver que tal.

Un saludo a todos y miles de gracias de nuevo.
Si uno se empeña, se puede programar C# con un bloc de notas y el compilador en línea de comandos. Ni VS ni ningún IDE es obligatorio.

Considero que C# sí es un lenguaje más cómodo y en términos generales mejor que Java. Si bien comenzaron siendo relativamente similares, hay suficientes características nuevas en C# 2.0 y 3.0, sobre todo enfocadas a dar soporte a Linq, como para mantenerte entretenido unos cuantos días. No en vano, existen libros como C# in Depth, de cerca de 400 páginas, dedicados casi en su integridad a explicar esas nuevas características.

Por otra parte, esto es como todo, depende hasta dónde quieras meterte. Para aprender los principios de la orientación a objetos, te sobra todo eso, y desde luego te sirve tanto Java como C#. Mi recomendación es que no te dejes asustar por el tamaño de los libros que puedas encontrar. Muchos de ellos tienen capítulos relacionados con asuntos como concurrencia, interfaces gráficas, programación web, atributos y "reflection", linq, y muchísimos detalles que al principio no necesitas conocer y te puedes saltar con toda tranquilidad.
hola, tengo una duda, me gustaria crear un int que en cada ejecucion tenga un valor aleatorio... como se tendria que hacer eso?
ShinMegami escribió:hola, tengo una duda, me gustaria crear un int que en cada ejecucion tenga un valor aleatorio... como se tendria que hacer eso?


http://www.cs.geneseo.edu/~baldwin/refe ... andom.html

Para que en cada ejecución sea diferente, como semilla deberías meter por ejemplo el tiempo.

un saludo ;)
Jonri escribió:
ShinMegami escribió:hola, tengo una duda, me gustaria crear un int que en cada ejecucion tenga un valor aleatorio... como se tendria que hacer eso?


http://www.cs.geneseo.edu/~baldwin/refe ... andom.html

Para que en cada ejecución sea diferente, como semilla deberías meter por ejemplo el tiempo.

un saludo ;)


si quiero hacerlo en javascript importo el paquete igual? lo pongo encima de los scripts?
La verdad que de javascript no controlo nada, no se si sera parecido, pero google ayuda mucho ;)
Esoty leyendo el hilo y en los ultimos threads sale C#. He estado buscando ni aun no he conseguido encontrar la diferencia entre C# y JAVA.
Estudiando DAI programe con Visual Basic .net, y todo era muy facil, ponias el boton, i definias su funcion. Eso es asi con JAVA i C#?

Gracias de adelantado por la explicacion.
oscarmu escribió:Esoty leyendo el hilo y en los ultimos threads sale C#. He estado buscando ni aun no he conseguido encontrar la diferencia entre C# y JAVA.
Estudiando DAI programe con Visual Basic .net, y todo era muy facil, ponias el boton, i definias su funcion. Eso es asi con JAVA i C#?

Gracias de adelantado por la explicacion.


Concretamente con C# sí. C# y VB.NET usan las mismas librerias y el mismo entorno de desarrollo, solo cambia el lenguaje.
Hola, se programar en java un poco y me gustaria aprender algun api grafico, me recomendais alguno en especial?
Otra cosa, estaba pensando en pillarme un libro, la biblia de Java o el Core Java2 Vol1, para lo q quiero,cual seria mejor? S irven los dos?

Algun sitio donde venga el indice de los dos, es q me lo quiero pillar por internet y no me lo queiro pillar sin saber en que se centra

Salu2
McCaan escribió:Hola, se programar en java un poco y me gustaria aprender algun api grafico, me recomendais alguno en especial?
Otra cosa, estaba pensando en pillarme un libro, la biblia de Java o el Core Java2 Vol1, para lo q quiero,cual seria mejor? S irven los dos?

Algun sitio donde venga el indice de los dos, es q me lo quiero pillar por internet y no me lo queiro pillar sin saber en que se centra

Salu2

Soy novato en JAVA. Mire el libro de Herst First in Java i es una marranada. Todo con dibujos...digamos que te ensenyan a programar de manera general, no en JAVA.
Ahora estoy con el Core Java vol1 en ingles (google es tu amigo) i pinta muy bien. Tanto que lo he pedido a la libreria.
-------
Una duda sobre JAVA i la plataforma .net. Cuando programaba con visual basic .net podia hacer los eventos de los botones...muy facilmente.
En java tambien es asi?
ShinMegami escribió:
si quiero hacerlo en javascript importo el paquete igual? lo pongo encima de los scripts?


javascript != JAVA

Debería de estar prohibido poner la palbra programar y Visual Basic en la misma frase :)
oscarmu escribió:
McCaan escribió:Hola, se programar en java un poco y me gustaria aprender algun api grafico, me recomendais alguno en especial?
Otra cosa, estaba pensando en pillarme un libro, la biblia de Java o el Core Java2 Vol1, para lo q quiero,cual seria mejor? S irven los dos?

Algun sitio donde venga el indice de los dos, es q me lo quiero pillar por internet y no me lo queiro pillar sin saber en que se centra

Salu2

Soy novato en JAVA. Mire el libro de Herst First in Java i es una marranada. Todo con dibujos...digamos que te ensenyan a programar de manera general, no en JAVA.
Ahora estoy con el Core Java vol1 en ingles (google es tu amigo) i pinta muy bien. Tanto que lo he pedido a la libreria.
-------
Una duda sobre JAVA i la plataforma .net. Cuando programaba con visual basic .net podia hacer los eventos de los botones...muy facilmente.
En java tambien es asi?


Que a ti te parezca marranada no quiere decir que lo sea. Head first son libros que o los amas o lo odias jeje. Si los amas estás de suerte, son brutales.

----

En swing (Java) es algo más cutre por no existir los closures. Pero vamos, ya lo verás.
Ya he mirado el indice de la Biblia de Java y de Core Java Vol1 y para lo q yo lo quiero (aprender un entorno grafico) a primera vista parece mejor la biblia de java pero he mirado un par de webs y lo tienen descatalogado, y aunke lo tenga en pdf, al ser tantas pag me va a costar lo mismo imprimirlo q comprarlo, asi q prefiero comprarlo.
Por cierto, segun he entendido para un entorno grafico es mejor swing q awt, correcto?

Salu2

Edito--->No habia visto lo q decias del Swing Fox, pero segun he visto por la red recomiendan mas el Swing
McCaan escribió:Ya he mirado el indice de la Biblia de Java y de Core Java Vol1 y para lo q yo lo quiero (aprender un entorno grafico) a primera vista parece mejor la biblia de java pero he mirado un par de webs y lo tienen descatalogado, y aunke lo tenga en pdf, al ser tantas pag me va a costar lo mismo imprimirlo q comprarlo, asi q prefiero comprarlo.
Por cierto, segun he entendido para un entorno grafico es mejor swing q awt, correcto?

Salu2

Edito--->No habia visto lo q decias del Swing Fox, pero segun he visto por la red recomiendan mas el Swing


No es que sea uno mejor que otro sinoq ue Swing es la "versión moderna" de AWT usa Swing, eso si si haces un applet deberá ser con awt

Respecto a los Closures... que no existan no tiene por que se mas cutre el entorno ;) en Java 7 se espera que se añadan si no lo está ya ;)

https://jdk7.dev.java.net/

Saludos

Daniel
Hoy empezamos a saco con los servlets [Ooooo]
Buenas!

Estoy haciendo un método en java que le pases una matriz bidimensional y te devuelta una matriz unidimensional con los 5 primeros valores pares de la matriz pasada (donde no sea par, sustituir por -1)...
El problema es que no se como hacer esa parte. La lógica está bien, lo que pasa es que no se me ocurre como leches recorrer la matriz a la cual pasarle los valores pares de la otra matriz, sin sobrescribirlos :S

Aquí os dejo el método que no consigo que funcione bien:

public static int [] Pares5(int [][] in) {
      int [] out = new int[5];
      for(int i = 0; i < in.length; i++) {
         for(int j = 0; j < in[i].length; j++) {
            if(in[i][j] % 2 == 0) {
               out[i] = in[i][j];
            }
            else {
               out[i] = -1;
            }
         }
      }
      return out;
}


Como veis reutilizo la variable i de las filas para recorrer out... pero claro haciendo eso, voy sobrescribiendo los valores anteriores...

Alguna ayuda?
Puyover escribió:Buenas!

Estoy haciendo un método en java que le pases una matriz bidimensional y te devuelta una matriz unidimensional con los 5 primeros valores pares de la matriz pasada (donde no sea par, sustituir por -1)...
El problema es que no se como hacer esa parte. La lógica está bien, lo que pasa es que no se me ocurre como leches recorrer la matriz a la cual pasarle los valores pares de la otra matriz, sin sobrescribirlos :S

Aquí os dejo el método que no consigo que funcione bien:

public static int [] Pares5(int [][] in) {
      int [] out = new int[5];
      for(int i = 0; i < in.length; i++) {
         for(int j = 0; j < in[i].length; j++) {
            if(in[i][j] % 2 == 0) {
               out[i] = in[i][j];
            }
            else {
               out[i] = -1;
            }
         }
      }
      return out;
}


Como veis reutilizo la variable i de las filas para recorrer out... pero claro haciendo eso, voy sobrescribiendo los valores anteriores...

Alguna ayuda?


No se si te he entendido bien, pero yo crearia una variable "k" inicializada en cero y cada vez que añadas un valor al vector "out" incrementala en uno (k++).
a ver si me ayudais porque me estoy volviendo loco de verdad, llevo una semana y no hay manera.

Tengo estas 4 clases:
public class Alfil{
   
   /** Atributo de posicion, coordenada x */
   
      public int x;
   
   /** Atributo de posicion, coordenada y */
   
      public int y;
   
   /**
   * Constructor con parametros de una figura Alfil.
   */
   
       public Alfil(int xp,int xy){
         x=xp;
         y=xy;
      }
   
   /** Metodo de obtencion del valor de la coordenada x de la figura.*/
   
       public int getX(){
         return x;
      }
   
   /** Metodo de obtencion del valor de la coordenada y de la figura.*/
   
       public int getY(){
         return y;
      }
   
   /** Metodo de cambio de valor de la coordenada x de la figura.*/
   
       public void setX(int newposX){
         this.x=newposX;
      }
   
   /** Metodo de cambio de valor de la coordenada y de la figura.*/
   
       public void setY(int newposY){
         this.y=newposY;
      }
   
   /** Metodo que devolvera true si se han podido modificar las
   *coordenadas del alfil y false si el movimiento no esta
   *permitido o hay un alfil a lo largo del movimiento
   *@return Variable que indica si se ha podido mover o no*/
   
       public boolean mover(Tablero t,int xposterior, int yposterior) {
         boolean resultado=false;
         Alfil[] tabAlfil=t.getAlfil();
         for (int i=0; i<tabAlfil.length; i++){
            if (Math.abs(xposterior-tabAlfil[i].getX())==Math.abs(yposterior-tabAlfil[i].getY())){
               if ((i<=4)&&(t.enRango(xposterior,yposterior)==true)&&(t.hayFigura(xposterior,yposterior)==false)){
                  System.out.println("movimiento permitido.Se va a proceder a mover el alfil...");
                  resultado=true;
               }   
               else{
                  System.out.println("movimiento no permitido");
                  resultado=false;
               
               }
            }
         }
         return resultado;
      }
   
   
   /**Metodo que muestra por pantalla la posicion del alfil*/   
       public void mostrar(){
         System.out.println("Alfil en ("+getX()+", "+getY()+")");
      }
   }

public class Casilla{
   /**Atributo de color negro*/
      public static final char NEGRO ='N';
   /**Atributo de color blanco*/
      public static final char BLANCO ='B';
   /**Atributo que guarda el color*/
      private char color;
   
   /**Constructor de la clase Casilla.
   *@param c Color a asignar*/
       public Casilla(char c){
         color=c;
      }
   
   /**Metodo para obtener el color de un objeto Casilla
   *@return El color asignado a dicha casilla*/
       public char getColor(){
         return color;
      }
   
   /**Metodo para asignar un color a una casilla
   *@param c El nuevo color a asignar.*/
       public void setColor(char c){
         color=c;
      }
   
   /**Metodo que comprueba si dos casillas son iguales
   *@param c El color de la casilla a comparar
   *@return Devuelve la comprobacion.*/
       public boolean iguales(Casilla c){
         if(getColor()==c.getColor())
            return true;
         else
            return false;
      }
   }


    public class Tablero{
   /** Atributo que representa el tablero.*/ 
      private Casilla tablero[][];
   /** Atributo que guarda los alfiles. */
      private Alfil tabAlfil[];
   /** Constructor de la clase tablero
   *@param Dimension que va a tener el tablero al crearse. */ 
       public Tablero(int dimension){
       
         tablero=new Casilla [dimension][dimension];
         tabAlfil=new Alfil [4];
         
         for(int i=0; i<tablero.length;i++){
            for(int j=0; j<tablero[i].length;j++){
               if((i+j)%2 == 0) tablero[i][j]=new Casilla('B');
               else tablero[i][j]=new Casilla('N');
            }
         }
      }
   
   /**Metodo para obtener el array de tablero desde un objeto creado de la clase Tablero.
   @return El array de tablero. */ 
       public Casilla[][] getTablero(){
         return tablero;
      }
   
   /**Metodo para obtener el array de alfiles.
   *@return Devuelve el array de alfiles.*/     
       public Alfil[] getAlfil(){
         return tabAlfil;
      }
   
   /**Metodo para mostrar el tablero.*/   
       public void mostrar(){
     
         for (int i=0; i<tablero.length;i++){
            for(int j=0;j<tablero[i].length;j++){
         if (hayFigura(i+1,j+1)) System.out.print ("("+tablero[i][j].getColor()+")"+"\t");
         else System.out.print(tablero[i][j].getColor()+"\t");
            }
            System.out.println(" ");
         }
         for (int i=0; i<tabAlfil.length;i++){
            tabAlfil[i].mostrar();
         }
      }
   
   /**Metodo que inserta un alfil en el tablero.
   *@param num El indice del alfil a insertar
   *@param posX Indica la posicion a insertar en el eje X.
   *@param posY Indica la posicion a insertar en el eje Y.
   *@return Devuelve un booleano indicando si se puede insertar en la posicion */
       public boolean insertarAlfil(int num, int posX, int posY){
       if(enRango(posX, posY)){
               tabAlfil[aFilasArray(num)]=new Alfil(posX, posY);
               return true;
            }
         else
            return false;
      }
   
   
   /**Metodo que devuelve si hay una figura en una posicion
   *@param xp Posicion en el eje X.
   *@param xy Posicion en el eje Y.
   *@return Indica si se ha podido mover o no.*/
     
       public boolean hayFigura(int xp, int xy){
         boolean resultado=false;
    int i=0;
         do{
            if(tabAlfil[i].getX()==xp && tabAlfil[i].getY()==xy) resultado=true;
            else resultado=false;
       i++;
         }
    while(resultado=false | i<tabAlfil.length);
         return resultado;
      }
   
   /** Metodo que comprueba si las posiciones indicadas estan dentro de los limites del tablero.
   *@param posX Posicion en el eje X.
   *@param posY Posicion en el eje Y.
   *@return Indica si se las posiciones indicadas estan dentro de los limites.*/
     
       public boolean enRango(int posX, int posY){
         if (tablero.length <aColumnasArray(posX) | tablero.length<aFilasArray(posY))
            return false;
         else
            return true;
      }
   
   
   /**Metodo para mover a un alfil de posicion
   *@param numFigura Indice de la figura
   *@param xPosterior Nueva coordenada X a mover el alfil
   *@param yPosterior Nueva coordenada Y a mover el alfil
   *@return Devuelve un booleano para saber si ha podido mover el alfil */
       public boolean moverAlfil(int numFigura, int xPosterior, int yPosterior){
         boolean resultado=false;
         if(enRango(xPosterior, yPosterior)){
            tabAlfil[aColumnasArray(numFigura)].setX(xPosterior);
            tabAlfil[aColumnasArray(numFigura)].setY(yPosterior);
            resultado=true;
         }
         else resultado=false;
         return resultado;
      }
   
   
   /**Metodo que transforma las coordenadas del usuario a coordenadas del array.
   *@param casillaY Casilla a transformar
   *@return La casilla en la posicion del array. */
       private int aFilasArray(int casillaY){
         return casillaY-1;
      }
   
   /**Metodo que transforma las coordenadas del usuario a coordenadas del array.
   *@param casillaX Casilla a transformar
   *@return La casilla en la posicion del array. */
       private int aColumnasArray(int casillaX){
         return casillaX-1;
      }
   }


/**Clase que prueba el funcionamiento del Tablero*/
    public class PruebaTablero{
       public static void main(String args[]){
         if (args.length != 1) {
            System.out.println("Uso: java PruebaTablero <dimension>");
         }
         else {
            int dimension = Integer.parseInt(args[0]);
            Tablero tablero = new Tablero(dimension);
            if (tablero.insertarAlfil(1,1,1))
               System.out.println("Alfil 1 colocado");
            if (tablero.insertarAlfil(2,1,dimension))
               System.out.println("Alfil 2 colocado");
            if (tablero.insertarAlfil(3,dimension,1))
               System.out.println("Alfil 3 colocado");
            if (tablero.insertarAlfil(4,dimension,dimension))
               System.out.println("Alfil 4 colocado");
         tablero.mostrar();
              System.out.println(tablero.hayFigura(1,1));
       System.out.println(tablero.hayFigura(5,5));
              System.out.println(tablero.hayFigura(1,1));
       System.out.println(tablero.hayFigura(1,5));
              System.out.println(tablero.hayFigura(1,1));
       System.out.println(tablero.hayFigura(5,1));

            if (tablero.moverAlfil(1, 2,2)) {
               System.out.println("Movimiento correcto");
               tablero.mostrar();
            }
            else {
               System.out.println("Movimiento incorrecto");
            }
            if (tablero.moverAlfil(2, 1, 1)) {
               System.out.println("Movimiento correcto");
               tablero.mostrar();
            }
            else {
               System.out.println("Movimiento incorrecto");
            }
            if (tablero.moverAlfil(1, 1,1)) {
               System.out.println("Movimiento correcto");
               tablero.mostrar();
            }
            else {
               System.out.println("Movimiento incorrecto");
            }
         
            if (tablero.moverAlfil(1, 1,1)) {
               System.out.println("Movimiento correcto");
               tablero.mostrar();
               tablero.mostrar();
            }
            else {
               System.out.println("Movimiento incorrecto");
            }
       System.out.println(tablero.hayFigura(1,1));
       System.out.println(tablero.hayFigura(5,5));
         }
      }
   
   }


Problemas:
1º El hayFigura de la clase Tablero no funciona bien segun lo probado en la clase PruebaTablero. Me dice siempre que false (he usado un while para evitar eso ya que con un for no puedo)
2º En el metodo moverAlfil de la clase Tablero tengo que comprobar que en la diagonal no haya ninguna figura para poder mover el alfil. No se como hacerlo la verdad, se como hacer para comprobar que el movmiento es diagonal pero no para ver si hay figuras de por medio.

A ver si a alguien se le ilumina la cabeza! Gracias chicos.
Donato escribió:[i][i][i][i][i][i][i][i][i][i]

Problemas:
1º El hayFigura de la clase Tablero no funciona bien segun lo probado en la clase PruebaTablero. Me dice siempre que false (he usado un while para evitar eso ya que con un for no puedo)
2º En el metodo moverAlfil de la clase Tablero tengo que comprobar que en la diagonal no haya ninguna figura para poder mover el alfil. No se como hacerlo la verdad, se como hacer para comprobar que el movmiento es diagonal pero no para ver si hay figuras de por medio.

A ver si a alguien se le ilumina la cabeza! Gracias chicos.
[/i][/i][/i][/i][/i][/i][/i][/i][/i][/i]

Tanta i tanta j tanto xp y tanto yp te vas a hacer un lio ;)yo primeramente nombraría las variable socn nombres mas representativos :P.

As imple vista y si no me equivoco el método hayFigura te muestra is el array tabAlfil está ocupado no??, por que no haces simplemente una comparación con null dela posicion que le pasas?? en vez de recorrer todo el array ves a la posicion que le pasas :P el método tabAlfil[i].getX()y tabAlfil[i].getY() ¿Que hacen?
Un consejo si creas métodos para obtener variables, no las pongas como public luego esas variables ;) hazlas privadas
daniel_5 escribió:
Donato escribió:[i][i][i][i][i][i][i][i][i][i]

Problemas:
1º El hayFigura de la clase Tablero no funciona bien segun lo probado en la clase PruebaTablero. Me dice siempre que false (he usado un while para evitar eso ya que con un for no puedo)
2º En el metodo moverAlfil de la clase Tablero tengo que comprobar que en la diagonal no haya ninguna figura para poder mover el alfil. No se como hacerlo la verdad, se como hacer para comprobar que el movmiento es diagonal pero no para ver si hay figuras de por medio.

A ver si a alguien se le ilumina la cabeza! Gracias chicos.
[/i][/i][/i][/i][/i][/i][/i][/i][/i][/i]

Tanta i tanta j tanto xp y tanto yp te vas a hacer un lio ;)yo primeramente nombraría las variable socn nombres mas representativos :P.

As imple vista y si no me equivoco el método hayFigura te muestra is el array tabAlfil está ocupado no??, por que no haces simplemente una comparación con null dela posicion que le pasas?? en vez de recorrer todo el array ves a la posicion que le pasas :P el método tabAlfil[i].getX()y tabAlfil[i].getY() ¿Que hacen?
Un consejo si creas métodos para obtener variables, no las pongas como public luego esas variables ;) hazlas privadas


Me lo piden asi en la practica. getX() te devuelve la posicion X del alfil y getY() lo mismo con la Y. Lo que hago es acceder a la posicion i del array y compruebo si esta ocupada comparandolo con los parametros, asi hasta que sea distinto de false pero chico, no hay manera.
Se supone que cuando inserto un alfil (insertarAlfil()) lo que hago es indicar el numero del alfil (posicion del array) y las coordenadas que tiene. DE ahi que acceda con un bucle condicional al tabAlfil[]

Es curioso, cambiado el hayFigura con esto:
public boolean hayFigura(int xp, int xy){
         boolean resultado=false;
    int i=0;
         do{
            if(tabAlfil[i].getX()==xp && tabAlfil[i].getY()==xy) resultado=true;
            else resultado=false;
       i++;
         }
    while(resultado==false | i<tabAlfil.length);
         return resultado;
      }


Y me da error en la ejecución, diciendo que se sale del array xD
carlos@carlos-pc-linux:~/documentos/facultad/1º/Programacion/Practicas Prog I/P6$ java PruebaTablero 5
Alfil 1 colocado                                                                                     
Alfil 2 colocado                                                                                     
Alfil 3 colocado                                                                                     
Alfil 4 colocado                                                                                     
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4                               
        at Tablero.hayFigura(Tablero.java:78)                                                         
        at Tablero.mostrar(Tablero.java:44)                                                           
        at PruebaTablero.main(PruebaTablero.java:18)                   


Me estoy volviendo loco ya, no sé que puede fallar

EDITO: me acabo de dar cuenta de que tienes razón! Pues ha sido fallo de los profes!
Vale a ver si me aclaro getX devuelve X de la clase Alfil ¿no?

Entonces no entiendo esto [font=arial,helvetica,sans-serif][size=100]tabAlfil[i].getX() tu debes comparar dos coordenadas con el array del alfiles ¿no? pues compáralso directamente algo asi if tabAlfil[i]==xp en vez de asi iftabAlfil[i].getX()==xp[/size][/font]
daniel_5 escribió:Vale a ver si me aclaro getX devuelve X de la clase Alfil ¿no?

Entonces no entiendo esto [font=arial,helvetica,sans-serif][size=100]tabAlfil[i].getX() tu debes comparar dos coordenadas con el array del alfiles ¿no? pues compáralso directamente algo asi if tabAlfil[i]==xp en vez de asi iftabAlfil[i].getX()==xp[/size][/font]


Se supone que los atributos son privados... Ya lo he cambiado y los he puesto asi, se habrán equivocado. De todas formas, es lo mismo hacerlo atraves del metodo getX() que comparandolo con el atributo porque este te lo devuelve
Donato escribió:a ver si me ayudais porque me estoy volviendo loco de verdad, llevo una semana y no hay manera...


Nos volvemos a ver XD.

Partiendo de tu codigo, te propongo esto:

1- Para el metodo "hayFigura" creo que el while deberia ser asi: while(resultado==false && i<tabAlfil.length); Te faltaba un "=" y "&&" en vez de "|". De esta forma, saldra cuando sea true o cuando se acabe el array.

2- Para comprobar casillas intermedias, primero debes identificar el movimiento diagonal (arriba izquierda, abajo derecha, ...). Con lo que, restas la fila destino con la de origen y segun sea negativo, cero o positivo el desplazamiento sera -1, 0, +1. Igual con las columnas. Despues, teniendo esos 2 desplazamientos, comprueba con un for cada casilla avanzando segun esos desplazamientos.

Ej: Alfil en la primera fila (fila 0) tercera columna (columna 2) quiere moverse a fila 2 columna 4. Haces fila destino - fila origen y da positivo. Anotas +1 para desplazamiento de filas. Haces igual para columnas y da positivo tambien (+1). Pues solo queda hacer un for pasando por las casillas origen +1fila +1 columna cada vez. Si llega al destino es que podia moverse, si no, break y fuera.

PD. Seguramente, como te estan diciendo se pueda hacer de otras formas, pero tampoco me he leido mucho el codigo. Asi que espero que te sirva o guie, jejeje.

Saludos!
public boolean hayFigura(int xp, int xy) {
    boolean resultado = false;
    int i = 0;

    do {
         if(tabAlfil[i].getX() == xp && tabAlfil[i].getY() == xy)
             resultado = true;
         else
             resultado = false;
         i++;
    } while(resultado == false | i < tabAlfil.length);

    return resultado;
}


Una sugerencia, porque no haces que cada casilla apunte a una figura, automaticamente de esta manera sabes si hay alguna ficha en esa casilla y ademas que figura es, en vez de tener coste (n) como en tu caso, tendras coste 1 bastante mejor, y el codigo de esta funcion seria

public boolean hayFigura(int xp, int xy) {
    if (xp < tablero.length && xy < tablero[xp].length)
        return tablero[xp][yp] != null;
    else
        LANZAR EXCEPCIO
}


y si no quieres lanzar excepcion comprueba las coordenadas antes de llamar a la funcion

habria que modificar la clase casilla
public class Casilla{

    private char color;
    private Figura figura;  <-----------
   
    public Casilla(char c){
        color = c;
        figura = null;    <----------
    }

    [...]
   
}


faltarian añadir los nuevos setters y getters, y la de mover/eliminar Figura

Alfil seria un hijo de Figura igual que las demas fichas. Si solo utilizas alfiles quita figura y pon alfil directamente
xgc1986 escribió:
public boolean hayFigura(int xp, int xy) {
    boolean resultado = false;
    int i = 0;

    do {
         if(tabAlfil[i].getX() == xp && tabAlfil[i].getY() == xy)
             resultado = true;
         else
             resultado = false;
         i++;
    } while(resultado == false | i < tabAlfil.length);

    return resultado;
}


Una sugerencia, porque no haces que cada casilla apunte a una figura, automaticamente de esta manera sabes si hay alguna ficha en esa casilla y ademas que figura es, en vez de tener coste (n) como en tu caso, tendras coste 1 bastante mejor, y el codigo de esta funcion seria

public boolean hayFigura(int xp, int xy) {
    if (xp < tablero.length && xy < tablero[xp].length)
        return tablero[xp][yp] != null;
    else
        LANZAR EXCEPCIO
}


y si no quieres lanzar excepcion comprueba las coordenadas antes de llamar a la funcion

habria que modificar la clase casilla
public class Casilla{

    private char color;
    private Figura figura;  <-----------
   
    public Casilla(char c){
        color = c;
        figura = null;    <----------
    }

    [...]
   
}


faltarian añadir los nuevos setters y getters, y la de mover/eliminar Figura

Alfil seria un hijo de Figura igual que las demas fichas. Si solo utilizas alfiles quita figura y pon alfil directamente


Asi sería muchiiiismo mas sencillo, el tema es que es una practica y sigo la plantilla.
Jomofer, en serio, me enamoras xDDD Mano de santo!
Pues nada, chicos. Hoy me ha llegado el Core Java v1 y v2 de Amazon UK.

Lo pedí a las librerias de Lleida pero me decian que estaba descatalogado. Como ya lo habia empezado con fotocopias en ingles me decidí a comprarlo por Amazon UK. Lo pedi el dia 16 i me ha llegado hoy, dia 22. Total, 4 dias habiles.
Ya que estaba puesto, y como me salia bastante mejor de precio que en españa. Decidi comprar el volumen 1 i volumen 2. La suma de los dos libros me ha salido al mismo precio que uno solo en España.

Bueno, si necesitas que os aclare alguna cosa del libro...solo teneis que pedirlo!
oscarmu escribió:Pues nada, chicos. Hoy me ha llegado el Core Java v1 y v2 de Amazon UK.

Lo pedí a las librerias de Lleida pero me decian que estaba descatalogado. Como ya lo habia empezado con fotocopias en ingles me decidí a comprarlo por Amazon UK. Lo pedi el dia 16 i me ha llegado hoy, dia 22. Total, 4 dias habiles.
Ya que estaba puesto, y como me salia bastante mejor de precio que en españa. Decidi comprar el volumen 1 i volumen 2. La suma de los dos libros me ha salido al mismo precio que uno solo en España.

Bueno, si necesitas que os aclare alguna cosa del libro...solo teneis que pedirlo!


Estos dos?

http://www.amazon.co.uk/Core-Java-Funda ... 511&sr=8-4
http://www.amazon.co.uk/Core-Java-Advan ... pd_sim_b_1
Coolpix escribió:
oscarmu escribió:Pues nada, chicos. Hoy me ha llegado el Core Java v1 y v2 de Amazon UK.

Lo pedí a las librerias de Lleida pero me decian que estaba descatalogado. Como ya lo habia empezado con fotocopias en ingles me decidí a comprarlo por Amazon UK. Lo pedi el dia 16 i me ha llegado hoy, dia 22. Total, 4 dias habiles.
Ya que estaba puesto, y como me salia bastante mejor de precio que en españa. Decidi comprar el volumen 1 i volumen 2. La suma de los dos libros me ha salido al mismo precio que uno solo en España.

Bueno, si necesitas que os aclare alguna cosa del libro...solo teneis que pedirlo!


Estos dos?

http://www.amazon.co.uk/Core-Java-Funda ... 511&sr=8-4
http://www.amazon.co.uk/Core-Java-Advan ... pd_sim_b_1


Para mi los mejores libros de Java ;)
Hola buenas. Acabo de descubrir este post de java y me gusta la verdad. Hace 2 años que aprendí Java y la verdad es que es un lenguaje que me encanta, y que hace algún tiempo que tengo algo abandonado y que pronto recuperaré.
Leí la primera página y de las APIS que vi, creo que os falta poner JBuilder que es de pago pero creo que de las que he provado la mejor; y también poderíais poner BlueJ, que es una API muy sencilla, intuitiva y simple, pero que funciona perfectamente para esa gente que está empezando y solo le interesa compliar y punto.

Nada mas, un saludo.
viejozorro escribió:Hola buenas. Acabo de descubrir este post de java y me gusta la verdad. Hace 2 años que aprendí Java y la verdad es que es un lenguaje que me encanta, y que hace algún tiempo que tengo algo abandonado y que pronto recuperaré.
Leí la primera página y de las APIS que vi, creo que os falta poner JBuilder que es de pago pero creo que de las que he provado la mejor; y también poderíais poner BlueJ, que es una API muy sencilla, intuitiva y simple, pero que funciona perfectamente para esa gente que está empezando y solo le interesa compliar y punto.

Nada mas, un saludo.


Un pequeño apunte JBuilder y BlueJ son IDEs no APIs ;)

Ya que estamos... alguien sabe cargar ela rchivo de configuración de log4j para una aplicación de escritorio??
daniel_5 escribió:
Un pequeño apunte JBuilder y BlueJ son IDEs no APIs ;)


Puse APIs? jajaja, se me fué.... [qmparto]
Coolpix escribió:
oscarmu escribió:Pues nada, chicos. Hoy me ha llegado el Core Java v1 y v2 de Amazon UK.

Lo pedí a las librerias de Lleida pero me decian que estaba descatalogado. Como ya lo habia empezado con fotocopias en ingles me decidí a comprarlo por Amazon UK. Lo pedi el dia 16 i me ha llegado hoy, dia 22. Total, 4 dias habiles.
Ya que estaba puesto, y como me salia bastante mejor de precio que en españa. Decidi comprar el volumen 1 i volumen 2. La suma de los dos libros me ha salido al mismo precio que uno solo en España.

Bueno, si necesitas que os aclare alguna cosa del libro...solo teneis que pedirlo!


Estos dos?

http://www.amazon.co.uk/Core-Java-Funda ... 511&sr=8-4
http://www.amazon.co.uk/Core-Java-Advan ... pd_sim_b_1


No son esos. Esa es la primera edicion del libro, la que se encuentra en PDF por internet. Esa version es del año 2002. I creo que se basa en otra version del SE. Te pone imagenes del IDE i ves que eso es windows 98 o algo mega viejo.

Yo compre estos dos:
http://www.amazon.co.uk/Core-Java-Funda ... 030&sr=1-1
y
http://www.amazon.co.uk/Core-Java-Advan ... 030&sr=1-2
Son la ultima edicion del libro, mucho mas actualizado...
Os aconsejo esta edicion. En las capturas sale Windows Vista y se trata de SE6.

El volumen dos trata de conexiones con bases de datos, ficheros avanzados...

El paquete te lo envian por MRW i en unos pocos dias lo tienes en casa.
Como se puedo haecr referencia al un determinado elemento de un vector? estoy provando con loquesea=Vector[numero] pero me dice que eso es para un array no para un vector ,que debo hacer??
zaius5 escribió:Como se puedo haecr referencia al un determinado elemento de un vector? estoy provando con loquesea=Vector[numero] pero me dice que eso es para un array no para un vector ,que debo hacer??


Pasos a seguir cuando no sabes hacer algo:

    Abres: http://java.sun.com/javase/6/docs/api/
    Buscas lo que no sepas usar, en este caso Vector.
    Ahi te vas a la lista de métodos
    Y mirando mirando encuentras: elementAt(int index) Returns the component at the specified index.

¿No es tan dificil verdad? :)


Esa pagina para cualquier programador de JAVA tiene que estar en favoritos! XD

yo suelo entrar en google y pongo "java sun [nombre_clase]" y me suele llevar a la pagina correspondiente de esa api [poraki]
sobre libros de c# yo tengo uno que me costo 3 € que se llama "c# al descubierto" la verda el dia que me lo mire
ya iran por el leguaje E o F
ISBN: 8420534773 ISBN-13: 9788420534770
769 respuestas
1, 2, 3, 4, 516