[Hilo Oficial II] Java

JaViNhORule escribió:Hola gente, llevo unos dias caña al java y he mejorado mucho pero al entregar una serie de ejercicios me han comentado de un error en todos ellos. Me dicen que el codigo introducido dentro del main no se puede reutilizar y por tanto es como si no existiera. Como puedo sacar el codigo del main sin perjudicar nada? Aqui os pongo un ejemplo:
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

public class FechaActual {

public static void main(String[] args) {

System.out.println (new Date());
Calendar c = new GregorianCalendar();
String dia, mes, anyo;

dia = Integer.toString(c.get(Calendar.DATE));
mes = Integer.toString(c.get(Calendar.MONTH)+1);
anyo = Integer.toString(c.get(Calendar.YEAR));

System.out.println (dia + " /" + mes +" / " + anyo);
}
}

Salu2 y gracias


Busca info sobre el modificador Static en los métodos. Después sobre el uso de funciones/métodos.

Salu2
Muchas gracias compañero, ahora mismo me pongo a ello.
Salu2
Alguien me recomendaria algun libro que no sea ninguno de los del post inicial, teniendo en cuenta que el pos principal esta un
poco desactualizado me gustaria saber de algun libro que recomendeis, porque la verdad me parecen una mierda todos los tutoriales que encuentro por internet porque ninguno me explica nada.
La biblia de java 2 es antigua pero es que no existe nada nuevo,e s decir que esa es la version que aun se usa a dia de hoy asi que ese libro te pued servir de mucho yo es el que estoy siguiendo.
Pues inicialmente he utilizado el famoso HEAD FIRST JAVA. Que creo que para entender los objetos, el poliformismo, interface...esta muy bien, todo muy grafico.
Y luego, he empezado con el Core Java (eight edition, ja se basa en SE6)

Añado:

Si empiezo una aplicación con Eclipse tengo que crearlo todo des de zero y, sobretodo, toda la parte grafica entiendo que también se tiene que crear por código.

En cambio, con Netbeans solo creando la aplicación ya te crea una ventana gráfica y puedes ir colocando los elementos con el raton.

Según tengo entendido, con los criterios de Swing es casi como HTML, debes seleccionar si quieres el boton en tal zona (EAST, NORTH...). Entiendo que entonces con eclipse no puedes con el raton colocar los botones donde te plazca i tal, no?

Alguien me puede aclarar estas dudas?

Gracias.
Hola gente. Os escribo porque tengo un par de dudas que no consigo resolver. Tengo un error en la linea del compareTo y no me doy cuenta que pasa. Es un metodo que sirve para buscar un producto en una matriz (_productos[]).
Producto buscar(String nombre){

   Producto producto;
   int mitad, compara,limiteInferior, limiteSuperior;
   mitad = 0;
   compara = 0;
   limiteInferior = 0;
   limiteSuperior = _siguiente;
   producto = null;
   while ((limiteInferior <= limiteSuperior) && (producto == null)) {
      mitad = (limiteInferior + limiteSuperior) / 2;
      compara = _productos[mitad].compareTo(producto.obtenerNombre());
      if (compara < 0) {
      limiteInferior = mitad +1;
      }
      else if (compara > 0) {
      limiteSuperior = mitad -1;
      }
      else {
      producto = _productos[mitad];
      }
   }
   return producto;
    }


Y otra cosa que no soy capaz de conseguir. Necesito un método que intercambie la posicion de dos productos dentro de la matriz. Los productos son nombres (es una practica sobre un supermercado). @param i posicion del primer producto y @param j posicion del segundo producto. ¿Se os ocurre algo para hacerlo?

Salu2 y muchas gracias.
JaViNhORule escribió:Hola gente. Os escribo porque tengo un par de dudas que no consigo resolver. Tengo un error en la linea del compareTo y no me doy cuenta que pasa. Es un metodo que sirve para buscar un producto en una matriz (_productos[]).
Producto buscar(String nombre){

   Producto producto;
   int mitad, compara,limiteInferior, limiteSuperior;
   mitad = 0;
   compara = 0;
   limiteInferior = 0;
   limiteSuperior = _siguiente;
   producto = null;
   while ((limiteInferior <= limiteSuperior) && (producto == null)) {
      mitad = (limiteInferior + limiteSuperior) / 2;
      compara = _productos[mitad].compareTo(producto.obtenerNombre());
      if (compara < 0) {
      limiteInferior = mitad +1;
      }
      else if (compara > 0) {
      limiteSuperior = mitad -1;
      }
      else {
      producto = _productos[mitad];
      }
   }
   return producto;
    }

Saber el error ayudaría, pero bueno, supongo que te refieres a esta línea:
      compara = _productos[mitad].compareTo(producto.obtenerNombre());

producto es null siempre, no hay un objeto inicializado así que no existe el método obtenerNombre() a no ser que sea método de clase.

JaViNhORule escribió:Y otra cosa que no soy capaz de conseguir. Necesito un método que intercambie la posicion de dos productos dentro de la matriz. Los productos son nombres (es una practica sobre un supermercado). @param i posicion del primer producto y @param j posicion del segundo producto. ¿Se os ocurre algo para hacerlo?

Salu2 y muchas gracias.

No sé si he entendido bien el problema. Almacenas en una variable auxiliar el objeto de la posición i, copias el objeto de la posición j en la posición i, y copias el auxiliar en j.
El error que da el primer metodo es:
symbol : method compareTo(java.lang.String)
location: class Producto
compara = _productos[mitad].compareTo(producto.obtenerNombre());
_________________________^
1 error
Tengo 3 clases (supermercado, almacen y producto) y una clase de prueba (PruebaSupermercado).
El metodo obtenerNombre() lo tengo declarado en esa clase, creo que ese no es el problema porque en el resto de lugares funciona correcto. El puntero del error señala hacia el compareTo y no se muy bien porque, tal vez sea una chorrada.

Respecto al metodo de intercambiar 2 productos dentro de la matriz, lo que me has dicho es lo que he estado intentando pero no soy capaz de sacarlo, seguire intentandolo.
Salu2 y gracias
JaViNhORule escribió:El error que da el primer metodo es:
symbol : method compareTo(java.lang.String)
location: class Producto
compara = _productos[mitad].compareTo(producto.obtenerNombre());
_________________________^
1 error
Tengo 3 clases (supermercado, almacen y producto) y una clase de prueba (PruebaSupermercado).
El metodo obtenerNombre() lo tengo declarado en esa clase, creo que ese no es el problema porque en el resto de lugares funciona correcto. El puntero del error señala hacia el compareTo y no se muy bien porque, tal vez sea una chorrada.

¿No te indica qué error es? ¿Nada de NullPointerException?
amuchamu escribió:
JaViNhORule escribió:El error que da el primer metodo es:
symbol : method compareTo(java.lang.String)
location: class Producto
compara = _productos[mitad].compareTo(producto.obtenerNombre());
_________________________^
1 error
Tengo 3 clases (supermercado, almacen y producto) y una clase de prueba (PruebaSupermercado).
El metodo obtenerNombre() lo tengo declarado en esa clase, creo que ese no es el problema porque en el resto de lugares funciona correcto. El puntero del error señala hacia el compareTo y no se muy bien porque, tal vez sea una chorrada.

¿No te indica qué error es? ¿Nada de NullPointerException?

No, solo muestra lo que he puesto antes, por eso me ha resultado extraño.
Bueno, el caso es que en la función buscar no usas el parámetro (String nombre), sin embargo tratas de obtener el resultado de un método de una variable no inicializada, que sigo pensando que es el problema.

Producto producto;
producto = null; ¿?
while ((limiteInferior <= limiteSuperior) && (producto == null)) {
   compara = _productos[mitad].compareTo(producto.obtenerNombre());
}

Ese producto.obtenerNombre() debería darte un Null Pointer Exception. Quizá te señala el compareTo porque los parámetros que le metes a esa función no son los definidos en vez de indicarte el otro error. Supongo que ahí lo que quieres es usar "nombre", que no lo usas en toda la función a pesar de ser el parámetro de entrada.

El error te lo da en ejecución, ¿no?
El error me lo da al compilar. Las variables las tengo todas inicializadas de ahi que me resulte extraño el error.

Edito: ya lo he solucionado. He creado otro bucle con la misma finalidad y me he olvidado de lo que tenia . En vez de utilizar el compareTo he creado 2 metodos ( esMayor() y esMenor() ) que compara la cadena de entrada y dependiendo del resultado me acota el intervalo de busqueda hasta dar con el producto buscado.
Muchas gracias por la ayuda
No se que cojones habrás hecho, pero si llamas a un método de una instancia de un objecto que es null, te va a petar SIEMPRE.

MyObject o = null;
o.toString; //NullPointerException


Vamos, que lo que tenías de while(... && producto==null) { producto.getNombre() } es imposible que llegue a funcionar correctamente.
redscare escribió:No se que cojones habrás hecho, pero si llamas a un método de una instancia de un objecto que es null, te va a petar SIEMPRE.

MyObject o = null;
o.toString; //NullPointerException


Vamos, que lo que tenías de while(... && producto==null) { producto.getNombre() } es imposible que llegue a funcionar correctamente.

Pues siento contradecirte pero esa parte la he conservado y funciona perfectamente. Me parece que no as entendido como funciona el metodo. A lo que llamo es a la clase producto que contiene el metodo obtenerNombre(). Es un poco enrevesado, tengo 3 clases enlazadas entre si, pero funciona perfectamente, ahora mismo lo acabo de terminar todo.
Seguramente me halla explicado yo mal con las dudas, llevo muy poco en java y esta mi primera aplicacion con mas de 1 clase y me ha costado un poquito.
Salu2 y gracias
JaViNhORule escribió:
redscare escribió:No se que cojones habrás hecho, pero si llamas a un método de una instancia de un objecto que es null, te va a petar SIEMPRE.

MyObject o = null;
o.toString; //NullPointerException


Vamos, que lo que tenías de while(... && producto==null) { producto.getNombre() } es imposible que llegue a funcionar correctamente.

Pues siento contradecirte pero esa parte la he conservado y funciona perfectamente. Me parece que no as entendido como funciona el metodo. A lo que llamo es a la clase producto que contiene el metodo obtenerNombre(). Es un poco enrevesado, tengo 3 clases enlazadas entre si, pero funciona perfectamente, ahora mismo lo acabo de terminar todo.
Seguramente me halla explicado yo mal con las dudas, llevo muy poco en java y esta mi primera aplicacion con mas de 1 clase y me ha costado un poquito.
Salu2 y gracias

¿obtenerNombre es estática? Entonces puedes ahorrarte el crear un objeto para llamar a un método estático, simplemente llama a la clase: Producto.obtenerNombre();

No sé qué usas para programar en java pero cualquier IDE te habría informado de ello, o al menos eclipse lo hace.
JaViNhORule escribió:
redscare escribió:No se que cojones habrás hecho, pero si llamas a un método de una instancia de un objecto que es null, te va a petar SIEMPRE.

MyObject o = null;
o.toString; //NullPointerException


Vamos, que lo que tenías de while(... && producto==null) { producto.getNombre() } es imposible que llegue a funcionar correctamente.

Pues siento contradecirte pero esa parte la he conservado y funciona perfectamente. Me parece que no as entendido como funciona el metodo. A lo que llamo es a la clase producto que contiene el metodo obtenerNombre(). Es un poco enrevesado, tengo 3 clases enlazadas entre si, pero funciona perfectamente, ahora mismo lo acabo de terminar todo.
Seguramente me halla explicado yo mal con las dudas, llevo muy poco en java y esta mi primera aplicacion con mas de 1 clase y me ha costado un poquito.
Salu2 y gracias


Si funciona será porque tengas varias cosas mal y unas compensen otras [carcajad] [carcajad]

Ya en serio, si funciona será porque es un método estático como dice amuchachu, y entonces lo estás haciendo... regular. El eclipse por lo menos te avisa cuando estás haciendo un acceso no-estático a un método estático. Te da un warning.

Si quieres aprender a programar no basta con hacer programas que funcionen aunque sean una chapuza, lo suyo es entender los conceptos (como lo de "static") para saber qué hacer frente a cada caso y hacer las cosas bien :)
Pues estoy empezando a programar con java, llevo como un mes haciendo cosillas pero muy despacio porque apenas tengo tiempo y lo que nos piden en la uni no es nada complicado asi que de momento voy tirando como puedo para aprobarla y pista. En el verano ya profundizare en el tema mas tranquilamente. Nos exigen utilizar el JEdit, al menos este año, supongo que luego pasaremos a algun IDE como eclipse o netbeans.
Estoy revisando el codigo y el metodo obtenerNombre() no es estatico.
Buenas!

Estoy empezando un GS de informática, en concreto DAM y nos han mandado un libro. Core java 2 volumen 1 y 2. Aunque no los he conseguido en castellano...

LLevamos 2 semanas de clases, y por ahora me está decepcionando un poquito... Quizás porque van muy lentos... Aún no ha explicado nada de la POO; ni tan siquiera if for while do-while etc... Sólo algunos métodos de String y poco más.... Espero que avance y en el primer trimestre ya hagamos cosas decentes, porque sino me voy a aburrir mucho

Un saludo y gracias por todo
Guantanamera escribió:Buenas!

Estoy empezando un GS de informática, en concreto DAM y nos han mandado un libro. Core java 2 volumen 1 y 2. Aunque no los he conseguido en castellano...

LLevamos 2 semanas de clases, y por ahora me está decepcionando un poquito... Quizás porque van muy lentos... Aún no ha explicado nada de la POO; ni tan siquiera if for while do-while etc... Sólo algunos métodos de String y poco más.... Espero que avance y en el primer trimestre ya hagamos cosas decentes, porque sino me voy a aburrir mucho

Un saludo y gracias por todo

Supongo que lo harán para que los que ni saben c se pongan al dia.
Guantanamera escribió:Buenas!

Estoy empezando un GS de informática, en concreto DAM y nos han mandado un libro. Core java 2 volumen 1 y 2. Aunque no los he conseguido en castellano...

LLevamos 2 semanas de clases, y por ahora me está decepcionando un poquito... Quizás porque van muy lentos... Aún no ha explicado nada de la POO; ni tan siquiera if for while do-while etc... Sólo algunos métodos de String y poco más.... Espero que avance y en el primer trimestre ya hagamos cosas decentes, porque sino me voy a aburrir mucho

Un saludo y gracias por todo

Ni en el primero ni en el último, primero teneis que conocer los conceptos básicos de la programación. En mi caso, dimos POO solo en el último trimestre.
Hay 2 problemas, el primero que los conceptos básicos hace muchísimos que los sé, desde la época del turbo c en msdos, o incluso desde el msx con el basic que traría... y segundo problema que van tan lento que hoy después de 2 semanas de clase hemos visto por fin un puto if.....

Nada de aquí a final de curso veremos por fin el for XDDDD


Un saludo

EDITADO: Alguno sabe si se puede conseguir el libro Core Java 2 en formato digital y en castellano?. Es que lo he buscado por todas partes y solo lo veo en papel

Un saludo
Buenas, primero de todo, perdón si ésto no va aquí, no sabía muy bien dónde ponerlo ni que buscar para ver donde ponerlo.

El caso es que estoy empezando programación en la universidad y el lenguaje que usamos es Java. El caso es que el profesor explica fatal y en los apuntes que nos pasa no viene nada sobre ésto. El caso es que he estado toqueteando y he conseguido (con Dr Java, no sé si influye, es lo que usamos) que me compile un programa que supuestamente multiplica por 5 el valor que le metes.


class Measurement{
  int longitud(int L){
  return L*5;
  }}



Mi duda es como hacer para probarlo, es decir, meterle yo un valor, por ejemplo 2 y que me dé 10 de resultado. Según tengo entendido, sólo puede ejecutarse un programa si existe un 'main', pero no sé exactamente lo que es ni cómo meterlo. Lo único que sé es que tengo que meter algo tipo Measurement p==new Measurement (valor); en el panel de interacciones, aunque no sé. Si alguien me echa una mano sobre cómo seguir le estaría agradecido.

Gracias.
[FlooD1993] escribió:Buenas, primero de todo, perdón si ésto no va aquí, no sabía muy bien dónde ponerlo ni que buscar para ver donde ponerlo.

El caso es que estoy empezando programación en la universidad y el lenguaje que usamos es Java. El caso es que el profesor explica fatal y en los apuntes que nos pasa no viene nada sobre ésto. El caso es que he estado toqueteando y he conseguido (con Dr Java, no sé si influye, es lo que usamos) que me compile un programa que supuestamente multiplica por 5 el valor que le metes.


class Measurement{
  int longitud(int L){
  return L*5;
  }}



Mi duda es como hacer para probarlo, es decir, meterle yo un valor, por ejemplo 2 y que me dé 10 de resultado. Según tengo entendido, sólo puede ejecutarse un programa si existe un 'main', pero no sé exactamente lo que es ni cómo meterlo. Lo único que sé es que tengo que meter algo tipo Measurement p==new Measurement (valor); en el panel de interacciones, aunque no sé. Si alguien me echa una mano sobre cómo seguir le estaría agradecido.

Gracias.


Yo hace nada también empece con esto de Java, pero vamos creo que tu programa sería algo así.... (pero no me hagas mucho caso xD)

//esto sería creo para hacer lo del main

public static void main( String args[] )

Ahora no tengo mucho tiempo te lo digo como creo que sería en pseudocódigo, mañana si quieres te lo doy si puedo en java.

INICIO

int numero;
visualizar ("introduce un número");
leer numero;
numero=numero*5;
visualizar ("El resultado es " +numero);

FIN

¿Me equivoco? xD, buenas noches.
the_waterman escribió: ...


public static void main( String args[] ) Cuando tengas tiempo, ¿puedes por favor explicarme qué significa cada parte de esa frase y si se usa en todos los programas ''así porque sí''? ¿O sólo se necesita si quiero X?

Es que ando bastante perdido la verdad. En clase el profesor pasa 1000 diapositivas de PowerPoint y no da tiempo para nada. Según lo que me he enterado, para probar un programa hay que poner algo del estilo:
boolean pruebaMiPrograma(){
    return MiPrograma(2)==10
}


Y supongo que eso tendrá que devolver 'true', pero no sé ni dónde, ni si hay que poner lo del 'public static void' ni nada.

Gracias por responder ;)

EDIT: Acabo de encontrar algo en los apuntes que puede ser lo que busque, pero no me funciona con mi programa o quizás haya algo que falta.

Ejemplo del profesor:
  // POST: Determina si x es una solución para
  // x2 + 2 · x + 1 = 0
  boolean ecuacion1 (double x){
    return x*x+2.0*x+1.0==0.0;
  }


Justo debajo, pone:

''Cuando apliquemos Ecuacion_1 a un número, tendremos true o false:

ecuacion1(-1.0) =
true

y

ecuacion1(1.0) =
false
''

El caso es que he estado probando sobre un archivo que no contuviera nada, probar metiendo en el panel de interacciones:
4 <= 5 <Intro>
Y en la siguiente línea, me aparecía directamente 'true'.

El caso es que si pongo (con el código copiado en su sitio) ''ecuacion1(-1.0) ='' en el panel de interacciones, no me dice error ni nada (del estilo Invalid top level statement), pero tampoco aparece 'true' o 'false', simplemente crea una nueva línea en blanco y ya. ¿Cómo hacer para que me salga true o false?
[FlooD1993] escribió:
the_waterman escribió: ...


public static void main( String args[] ) Cuando tengas tiempo, ¿puedes por favor explicarme qué significa cada parte de esa frase y si se usa en todos los programas ''así porque sí''? ¿O sólo se necesita si quiero X?


¿Ni siquiera habéis probado a hacer el típico Hola Mundo? Te han liado bastante. Lo mejor será que te mires un manual de java y lo vayas siguiendo.
amuchamu escribió:
[FlooD1993] escribió:
the_waterman escribió: ...


public static void main( String args[] ) Cuando tengas tiempo, ¿puedes por favor explicarme qué significa cada parte de esa frase y si se usa en todos los programas ''así porque sí''? ¿O sólo se necesita si quiero X?


¿Ni siquiera habéis probado a hacer el típico Hola Mundo? Te han liado bastante. Lo mejor será que te mires un manual de java y lo vayas siguiendo.


Pues alguna diapositiva puso el primer día de eso, creo recordar, pero no explicó nada. ¿Alguna recomendación de un manual decente?
[FlooD1993] escribió:Pues alguna diapositiva puso el primer día de eso, creo recordar, pero no explicó nada. ¿Alguna recomendación de un manual decente?

Yo aprendí con el de la web de java, que ahora es éste: http://download.oracle.com/javase/tutor ... index.html . Pero yo ya sabía algo de programación, si partes de cero no sé si se entenderá bien. Seguro que hay muchos manuales en español si lo prefieres, no te sé decir ninguno concreto.
A ver a ver, os estáis confundiendo...

Un programa Java debe tener como mínimo una clase, y esa clase debe tener un método "main", que sea estático (eso significa que ese método puede ser llamado directamente desde la clase, sin tener que crear un objeto de ella, a lo mejor esto aún no lo habéis visto...). Lo del String args[] como argumentos de ese método main es para pasarle argumentos por línea de comandos al programa (que sería ejecutar el programa bajo MS-DOS o consola en Linux escribiendo java MiPrograma argumento1 argumento2 argumento3...)

public class MiPrograma {
     public static void main(String args[]) {
           int a;
           //Leer número por teclado y guardar en a
           a = a*5;
           System.out.println(a);
     }
}


El mostrar el número por pantalla se hace con el System.out.println, es llamar al método println de la clase System.out del entorno de ejecución de Java (éste método es estático, daos cuenta que no necesitais crear un objeto de la clase System.out para invocarlo). Ese programa es la versión "a lo bruto", si lo que quieres es un programa que delegue esa tarea en otro método...

public class MiPrograma {
    public static void main(String args[]) {
           int n;
           n = multiplicar(x); //x es el número a multiplicar por 5
    }

    public int multiplicar(int numero) {
         return numero*5;
    }
}


El tema de leer cosas por teclado en Java es algo más complejo, hay que manejar excepciones, nosotros lo que hacíamos era utilizar una clase que nos pasaron los profesores, ya mañana os explico que es tarde y tengo sueño xD
[FlooD1993] escribió:El caso es que estoy empezando programación en la universidad y el lenguaje que usamos es Java. El caso es que el profesor explica fatal y en los apuntes que nos pasa no viene nada sobre ésto. El caso es que he estado toqueteando y he conseguido (con Dr Java, no sé si influye, es lo que usamos) que me compile un programa que supuestamente multiplica por 5 el valor que le metes.
class Measurement{
  int longitud(int L){
  return L*5;
  }}


Mi duda es como hacer para probarlo, es decir, meterle yo un valor, por ejemplo 2 y que me dé 10 de resultado. Según tengo entendido, sólo puede ejecutarse un programa si existe un 'main', pero no sé exactamente lo que es ni cómo meterlo. Lo único que sé es que tengo que meter algo tipo Measurement p==new Measurement (valor); en el panel de interacciones, aunque no sé. Si alguien me echa una mano sobre cómo seguir le estaría agradecido.
Gracias.


Si lo que quieres es que multipliques por 5 un valor que pasas como argumento del programa, yo lo haría así.

public class Multiplica {

   public static void main (String args[]) {

      int num = Integer.parseInt(args[0]);
      
      System.out.print(num * 5);
   }
}


Si lo que quieres es pedir por pantalla un número para luego multiplicarlo por 5, y finalizar mostrándo por pantalla el resultado yo lo haría, así...
import java.util.Scanner;

public class Multiplica {

   public static void main (String args[]) {
      int num;
      
      Scanner teclado = new Scanner(System.in);
      
      System.out.print("Introduce un número: ");
      num = teclado.nextInt();
      
      System.out.print("El número " + num + " multipliaco * 5 = " + num * 5);
   }
}


A todo ésto, has de fijarte que no estoy usando excepciones, por lo que si no se entroduce un entero dará error.

Un saludo
En una matriz de java,tengo que meter una posicion(ejemplo : 00 01 10 11) ,y que me diga si existe o no,la matriz esta hecha,pero a la hora de que me saque la posicion, aquellas posiciones introducidas que van del 00 al 09 no me muestra correctamente.

Si la matriz es de 2 x2
Las posiciones serian : 00 01 11 12


Es decir si introduzco la posicion: 00 me muestra cuando le doy a imprimir su valor solo 0,si meto posicion 01 solo me muestra el 1,eso si...a partir de la posicion 10 si me las muestra,el problema va del 00 al 09.


El codigo es este.

//Muestro las posiciones de las matrices ya metidas anteriormente
System.out.print("\nLas posiciones disponibles son:");
for(i=0;i<filas;i++){
for(j=0;j<columnas;j++){
System.out.print("\n"+i+j);
}
}

int posicion=0;
System.out.println("\nIntroduzca una posicion:");
posicion=valor.nextInt();

System.out.println(posicion); ->aki me da el problema solo me sale correcto a partir de la posicion 10,si meto posicion 01,me muestra solo el 0 y el 1 no.........
pecneyst escribió:En una matriz de java,tengo que meter una posicion(ejemplo : 00 01 10 11) ,y que me diga si existe o no,la matriz esta hecha,pero a la hora de que me saque la posicion, aquellas posiciones introducidas que van del 00 al 09 no me muestra correctamente.

Si la matriz es de 2 x2
Las posiciones serian : 00 01 11 12


Es decir si introduzco la posicion: 00 me muestra cuando le doy a imprimir su valor solo 0,si meto posicion 01 solo me muestra el 1,eso si...a partir de la posicion 10 si me las muestra,el problema va del 00 al 09.


El codigo es este.

//Muestro las posiciones de las matrices ya metidas anteriormente
System.out.print("\nLas posiciones disponibles son:");
for(i=0;i<filas;i++){
for(j=0;j<columnas;j++){
System.out.print("\n"+i+j);
}
}

int posicion=0;
System.out.println("\nIntroduzca una posicion:");
posicion=valor.nextInt();

System.out.println(posicion); ->aki me da el problema solo me sale correcto a partir de la posicion 10,si meto posicion 01,me muestra solo el 0 y el 1 no.........


Si lo he entendido bien...
Al hacer "posicion=valor.nextInt();" estás cargándote lo que hay en "posicion", osea que el 0 que tenías desaparece. Si quieres puedes recoger lo que te introduzcan en un string y comprobar su longitud el length. Ahí controlas que si la longitud es == 1 le concatene un 0 delante y sino que no haga nada. El problema es que a in int es igual cuantos 0 le pongas delante porque los va a quitar.

EDITO: no sería más sencillo que pidieras las 2 posiciones por separado?
pecneyst escribió:En una matriz de java,tengo que meter una posicion(ejemplo : 00 01 10 11) ,y que me diga si existe o no,la matriz esta hecha,pero a la hora de que me saque la posicion, aquellas posiciones introducidas que van del 00 al 09 no me muestra correctamente.

Si la matriz es de 2 x2
Las posiciones serian : 00 01 11 12


Es decir si introduzco la posicion: 00 me muestra cuando le doy a imprimir su valor solo 0,si meto posicion 01 solo me muestra el 1,eso si...a partir de la posicion 10 si me las muestra,el problema va del 00 al 09.


El codigo es este.

//Muestro las posiciones de las matrices ya metidas anteriormente
System.out.print("\nLas posiciones disponibles son:");
for(i=0;i<filas;i++){
for(j=0;j<columnas;j++){
System.out.print("\n"+i+j);
}
}

int posicion=0;
System.out.println("\nIntroduzca una posicion:");
posicion=valor.nextInt();

System.out.println(posicion); ->aki me da el problema solo me sale correcto a partir de la posicion 10,si meto posicion 01,me muestra solo el 0 y el 1 no.........


Me ha costado entenderte xD Si lees "01" como un entero, en posicion quedará almacenado únicamente un 1, que es lo que te muestra después. Yo creo que lo más sencillo es leer ambos números por separado.
Otra cosa es cómo hagas la comprobación de si existe el índice en la matriz...
Gracias por contestar.

Haber si me podeis hechar una mano en este ejercicio:

Trata sobre hacer una matriz y que te diga el numero mayor de cada columna.

Es decir si los numeros son:

2 3 4
5 2 8

La 1ª columna es 5
La 2ª columna es 3
La 3ª columna es 8


El ejercicio lo tengo "casi"terminado pongo el código de encontrar el numero mayor y menciono error:


Las variables,como introducir introducir los valores de la matriz funciona correctamente.

int mayor= matriz[0][0];

System.out.println("El numero mayor de cada columna es: ");
System.out.println(" ");

for(j=0;j<columnas;j++){
for(k=0;k<filas;k++){

if(mayor<matriz[k][j]){
mayor=matriz[k][j];

System.out.println(mayor);

}


}

}


Si introduzco los valores:

1 2
3 4

Me sale perfecto me dice que el mayor de la primera columna es 3 y luego de la segunda 4

El problema viene a que sin introduzco los valores

5 3
2 1

No me imprime ningún resultado,me sale en blanco el mayor,esto pasa siempre que ponga numeros menores a continuación,del primer digito introducido en la matriz.
pecneyst escribió:...


En lugar de esperar a que te resuelvan el problema, haz trazas de tu código para encontrar tú la solución. Rómpete un poco el coco, que te vendrá mejor [ginyo]
Tienes 2 problemas:
- No reinicias el valor inicial de "mayor" cuando pasas de una columna a otra.
- Sólo imprimes el valor de "mayor" cuando se encuentra un número mayor al que estás comparando.
amuchamu escribió:Tienes 2 problemas:
- No reinicias el valor inicial de "mayor" cuando pasas de una columna a otra.
- Sólo imprimes el valor de "mayor" cuando se encuentra un número mayor al que estás comparando.


Muchas Gracias ya lo hice :D
Joder tíos yo estoy estudiando DAM y ya llevo 2 meses y aun no me entero de nada...es normal? o es que soy un poco vago? XD

saludos!
Buenas!. Alguno tiene o me dice de dónde bajar un manual de Swing en castellano y empiece todo desde cero?. He visto algunos tutoriales, pero son un poco liosos. A ver si alguien tiene apuntes de su carrera o módulo o de donde sea y me los puede pasar.

Muchas gracias!
De Swing no te puedo dar un tutorial, pero sí que sé que hay un libro (eso sí, en inglés) que se podría decir que es la biblia de Swing, son más de 1000 páginas. En la biblioteca de mi universidad está y más de una vez lo he ojeado. Si es tutorial o no, ya no te puedo decir, pero si hay algo que no aparezca en ese libro... dudo que exista xD

http://shop.oreilly.com/product/9781565924550.do

He encontrado un pdf, por lo visto es más reducido que el que yo te digo pero quizá te sirve...
http://www.google.es/url?sa=t&rct=j&q=j ... Ow&cad=rja
Buenas.

Tengo una duda a ver si alguien me la puede resolver.

Resulta que tengo unos métodos creados para extraer información de un archivo, es decir en local me funciona todo correctamente. El problmea está al implementar esto con JSP es decir yo mediante un formulario le quiero indicar que archivo debo procesar, el problmea es que no he encontrado la manera (si es posible) de hacerlo, todo está en un server no local, las clases y las JSP también, pero el archivo se "subiría" desde el cliente, este archivo no debe escribirse en el disco del servidor.

¿hay alguna forma de hacerlo?

Gracias
Buenas, bueno por si a alguien le interesa lo he resuelto con la librería fileupload

http://commons.apache.org/fileupload/

Una vez tengo el fichero en memoria ya lo puedo tratar como un input de bytes, y así no necsito guardarlo en el servidor.

Saludos
Hola Compañeros, he empezado hace muy muy poco con java y tengo un problema, que soy una persona visual y si no veo un ejemplo no soy capaz de entender como plantearlo, aunque sea muy sencillo.

Lo que tengo que hacer es lo siguiente:

Diseña un programa Java para resolver una ecuación de primer grado con una incógnita (x), suponiendo que los coeficientes de la ecuación (C1 y C2) se introducen desde teclado.

C1x + C2 = 0

Es muy simple, ya tengo todo puesto, pero no se como se plantean las operaciones en java, si me podéis ayudar a entenderlo os lo agradecería muchísimo.


un saludo y gracias
Pues tienes que plantearlo de forma que se aisle X.
Hola, se como hacer un ecuacion, el problema me viene al como plantearlo en un lenguaje, por.eso pedia si me podiais poner la estructura de como seria, no lo pongo aqui para que me lo hagais, es para intentar comprenderlo.

un saludo y gracias
Una ecuación de primer grado con una incógnica no tiene misterio, si la función es "ax + b = 0", tú pides a y b y sólo tienes que calcular -b/a, una simple división.

El único problema es cómo dejar el resultado si no es un entero (si b no es múltiplo de a):
- Si quieres calcular el resultado con decimales, tendrás que tener en cuenta que la división entre 2 enteros es otro entero (5/2 = 2, no 2.5), así que tendrías que hacer que algún miembro de la división sea un real.
- Si quieres dejarlo como fracción, podrías reducirla si es posible (por ejemplo, 6/27 -> 2/9), sólo tienes que sacar el mcd.
Una duda, que veo que tengo Java un poco oxidado:

Tengo una superclase abstracta con un atributo (básicamente un booleano) y quiero redefinirlo en cada una de las subclases que heredan de la misma. Todos los métodos y atributos de todas las clases son static, para no tener que instanciar clases a la hora de usarlos, de modo que tengo mi clase padre:
public class Superclase(){
static protected boolean x = true;
}

Y mis subclases, por ejemplo:
public class Subclase() extends Superclase{
}

Mi duda es, ¿Cómo hago esto?, he intentado meter la redefinición en el constructor, tal que:
public class Subclase() extends Superclase{
public Subclase(){
x = false;
}
}


Pero cuando hago un:

System.out.println(getx());

Me sigue saliendo True, debido a que en realidad no estoy instanciando ninguna clase ya que es estática.

¿Alguna idea?
No se si tiene mucho sentido lo que quieres hacer. Si defines una propiedad como static lo que le estas diciendo a java es que esa propiedad es de la clase en vez del objeto. Si heredas una clase con propiedades static esta seguirá siendo de la clase y por consiguiente cualquier modificación en ella en cualquiera de las clases heredadas lo modificara pq solo habrá 1 valor.
Ademas estas clases son normales y se pueden instanciar eso si tendrán una propiedad statica definida para todas ella que compartirán, en este caso x.
Yo suponía que al heredar de una clase podría redefinir todos sus atributos ya fuesen static o no, y en el caso de los primeros, su valor estaría asociado a la subclase no a la clase padre. Es decir que si un atributo static int tiene valor 1 en la clase y luego se redefine en una subclase con valor 2, dicho valor estaría asociado a la subclase.
Haz la prueba y veras que no es así.
Si dices que es static estas diciendo que es una propiedad de la clase, si heredas de esta se sigue manteniendo la propiedad padre por que es static.
769 respuestas