Hilo General - Dudas de Java

Lecherito

#180 Nah, no parece funcionar, lo que estoy haciendo para realmente comprobar si recarga o no es comentar una linea para ver si no imprime pero nada, de ninguna forma se hace.

Lo único que intento es "emular" el sistema de "debug" de eclipse, que cualquier modificación que haces la regarga en Runtime (si es que no supone una modificación gorda como una clase entera nueva etc) y ale, rulando.

1 respuesta
MTX_Anubis

#181 http://tutorials.jenkov.com/java-reflection/dynamic-class-loading-reloading.html#dynamicreloading

En mi vida lo he hecho pero vamos, googleando más tiene que haber ejemplos a cascoporro porque lo que pides es algo que se suele hacer.

B

Disculpad que pregunte aquí, pero quiero postear una oferta de trabajo, y no sé si se hizo un hilo para ello o tengo que abrir un hilo nuevo, ¿alguien lo sabe?

1 respuesta
Lecherito

#183 Pm a Pirado o si es seria, supongo que puedes postearla directamente.

1 respuesta
B

#184 Okey gracias. Es sería así que ya he abierto un hilo, a ver si hay suerte:

http://www.mediavida.com/foro/9/trabajo-directo-proyectos-ruby-on-rails-468579#1

26 días después
re4q

Miren, estoy aprendiendo a programas en java y hasta el momento todo muy sencillo, pero a la hora de scanear, por ejemplo si quiero guardar un numero o caracter que me ponga el usuario como una variable tengo muchos problemas...
He probado:
import java.util.scanner;
(void main etc..etc..)
(codigo)
Scanner variableX=new Scanner(System.in);
Systeam.out.println (variableX)

Y no me funciona... me da error de codigo Scanner
Bueno esto es un ejemplo.. y ya digo k no se como coger esos datos k m da el usuario..

2 respuestas
FuckingEnemy

#186

haz esto:

Scanner variableX=new Scanner(System.in);

String cadena;

cadena = variableX.nextLine()//o nextInt(), etc. dependiendo del valor que le introduzcas;

Systeam.out.println (cadena);

Lo que tu haces es simplemente crear el scanner, pero no declaras en ningun lado donde guardar el valor que le introduces, luego nextLine(), nextInt(), nextFloat(), etc. Son metodos que dependiendo del tipo de dato, pues ponemos uno u otro.

1
re4q

El problema anterior ya lo he solucionado de otra forma, ahora tengo otro problema y espero no ser pesado, en este caso es distinto y es que no se que bucle o funcion usar para que el siguiente codigo, cuando pongan el numero incorrecto (variable<=0) de error y vuelva a preguntar lo mismo.
Yo lo hice con un if, pero es evidente que con el if, pasa de largo y se va a la siguiente funciona aunq sea incorrecto. Que funcion usariais?

public static void main(String[] args) throws IOException
    {
        InputStreamReader parhoyo=new InputStreamReader(System.in);
        BufferedReader parhoyo2=new BufferedReader (parhoyo);
        System.out.println("Par del hoyo?");
        String par = parhoyo2.readLine();
        int parnum=Integer.parseInt(par); //coge la cadena y la convierte en numero
        if (parnum<=0){
        System.out.println ("Numero de par incorrecto");
    }else{
        
System.out.println("Par del hoyo es: " +par); } InputStreamReader numerogolpes= new InputStreamReader (System.in); BufferedReader numerogolpes2=new BufferedReader (numerogolpes); System.out.println("Numero golpes?"); String golpes = numerogolpes2.readLine(); int golpesnum=Integer.parseInt(golpes); //coge la cadena y la convierte en numero if (golpesnum<=0){ System.out.println ("Numero de golpes incorrecto"); }else{
System.out.println("Numero de golpes es: " +golpesnum); } } }
1 respuesta
pdj

#188 do while

1
20 días después
Prostyler

Alguien sería tan amable de compartir algún material de aprendizaje de Herencia con Java con sus ejemplos y que vaya poco a poco? Estoy algo perdido :s

#191 Muchas gracias!!! :)

1 respuesta
Wasd

#190 Muy viejo, pero bastante bueno:

http://www.arrakis.es/abelp/ApuntesJava/Herencia.htm

http://www.arrakis.es/abelp/ApuntesJava/Herencia2.htm

1 1 respuesta
maccgeo

#186

Se que es bastante tarde pero da error por que la la linea de importación es:

import java.util.Scanner;

, con la letra S en mayúscula.

Zapador

Tengo una duda.

Estoy usando la librería jsoup para descargar el contenido de un <div>, que a su vez contiene muchos <p>, ya que se trata de una noticia y contiene varios párrafos.

La idea es añadir un salto de línea por cada párrafo.
El problema es que me está añadiendo los saltos de líneas todos juntos y al final del texto global.

String result;

// get html document structure					 
Document document = Jsoup.connect("http://midireccion").get();					 

// selector query					 
Elements node = document.select("div#HOTWordsTxt");

// check results
for (Element p : node ) {
   result+= p.select("p").text()+"\n"); //añado salto de línea por cada párrafo					 
}
1 respuesta
elkaoD

#193

p.select("p") selecciona TODOS los párrafos hijos de la noticia (resultado tipo Elements), por lo que p.select("p").text() (documentación text()) es todo el texto de todos los párrafos.

A esto al final le concatenas un "\n", tal y como has descrito.

Lo que necesitas es un bucle anidado.

PD: Como consejo, usa un StringBuilder en lugar de String a pelo.

1 1 respuesta
Zapador

#194 Efectivamente, select selecciona TODOS los elementos.
Estaba cegado totalmente, encima hacía el select de un div con una id concreta.

Ya he corregido el problema.

String result;

// Selecciono todos los párrafos contenidos en el div cuya id es HOTWordsTxt 
Elements node = document.select("div#HOTWordsTxt > p");

//recorro cada párrafo
for (Element j : node ) {
    result+= j.text()+"\n"; //añado salto de línea
}

Gracias amijo, me has hecho ver la luz ^.

1 respuesta
elkaoD

#195 de nada :)

Ojo, esa solución te vale porque sólo tienes un <div> contenedor de <p>. Con varios divs necesitan el doble bucle sí o sí.

Nihon

Buenas a todos, tengo un pequeño problema que no debe ser muy difícil de resolver pero que de momento me tiene un poco perdido. Estoy desarrollando una aplicación que descarga un fichero de un servidor FTP y después de editarlo lo vuelve a subir.

El caso es que si ya se ha descargado el fichero 1 vez y la fecha de modificación en el servidor no es mayor, no me hace falta bajarlo otra vez, supongo que esto es bastante lógico. El caso es que no logro dar con la manera para obetener la fecha del archivo (timestamp) en cuestión en el servidor. El código que ejecuta la conexión y descarga es el siguiente:

if(ftpClient.login(nombreusuario, passusuario))
{	 			
	 ftpClient.enterLocalPassiveMode();
	 ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
	 				
 //Bajar archivo
 OutputStream out = new FileOutputStream(new File(Environment.getExternalStorageDirectory() +"/Informes/download.xml"));
 ftpClient.retrieveFile("datos.xml", out);
 out.close();
 		
 ftpClient.logout();
 ftpClient.disconnect();
}

Es para una aplicación Android, pero lo pregunto aquí por ser código java. En algún momento tengo que usar un FTPFile e instanciarlo pero como ya digo esto me tiene un tanto perdido.

1 respuesta
pdj

#197 Que cliente estas usando? El apache commons tiene esa potencia http://commons.apache.org/proper/commons-net/ , en el cliente ftp puedes sacar una lista de FTPFile y esta clase tiene el metodo getTimestamp, puedes echarle un ojo en http://commons.apache.org/proper/commons-net//apidocs/org/apache/commons/net/ftp/FTPFile.html
Si te hace falta un ejemplo, avisa y te lo escribo en tal que llegue a casa :D

EDIT: El objeto FTPClient tiene varios metodos que devuelven un FTPFile (o una array) tales como listDirectories() o listFiles(), tienes el javadoc en http://commons.apache.org/proper/commons-net//apidocs/org/apache/commons/net/ftp/FTPClient.html

1 1 respuesta
Nihon

#198 Gracias, muy amable. Estoy usando el commons de apache y he visto por ahí que existe como dices el .getTimeStamp() pero es que soy un poco manco y no me queda muy claro lo de coger el file que me interesa y por tanto comparar lo que realmente necesito (que seguro que no es complicado pero se ve que estoy lento estos días).

En la carpeta de descarga del servidor en principio sólo habrá un archivo pero no se como seleccionar ese archivo en concreto y sacar sus propiedades. Hay veces en las que necesito que me expliquen las cosas como a un niño o como a un tonto (o ambas cosas).

1 respuesta
pdj

#199 Vale, te doy un ejemplo que debería funcionar, no lo he probado porque lo estoy escribiendo aquí del tirón pero seria algo como lo siguiente:

if(ftpClient.login(nombreusuario, passusuario))
{                               
ftpClient.enterLocalPassiveMode(); ftpClient.setFileType(FTP.BINARY_FILE_TYPE); //Directorio default, sino ponle el path al metodo for(FTPFile remoteFile : ftpClient.listFiles(){ if(remoteFile.getName().isEqualToString("datos.xml") && remoteFile.getTimestamp().after(otrocalendar)) { //Bajar archivo OutputStream out = new FileOutputStream(new
File(Environment.getExternalStorageDirectory() +"/Informes/download.xml")); ftpClient.retrieveFile("datos.xml", out); out.close(); } } ftpClient.logout(); ftpClient.disconnect(); }

No puedo ni tabular, confió en el poder del tag code!

EDIT: Ha salido un culo >.<, te lo arreglo un poco

1 1 respuesta
Nihon

#200 Muchas gracias, mañana cuando me ponga a trabajar lo pruebo. Practicamente ha sido el único quebradero de cabeza que no sabía muy bien como abordar. Supongo que estaba un poco saturado y no podía pensar más.

Clicspam

Buenas, llevo un par de meses iniciándome en Java pero siento que no puedo avanzar debido a un problema muy básico: No manejo bien la arquitectura de clases más básica. No se como funcionan el "implements" o el "extends" más que por encima, no manejo herencia, etc.

¿Hay alguna serie de ejercicios o tutoriales que se centren en las relaciones entre clases que me podáis recomendar?

1 respuesta
Nihon

#202 Bueno, si el problema es relacionar clases y manejar herencia o polimorfismo, no es un problema de Java en sí mismo ya que eso es común a cualquier lenguaje de programación. Aún así puedes ver ejemplos claros en este PDF. Aunque es un tostón de libro en sí mismo, están los conceptos básicos de herencia con los típicos ejemplos de figuras y dibujable.

1 respuesta
Clicspam

#203
Debería sentirme mal por necesitar un libro llamado "Aprenda java como si estuviera en primero" cuando estoy en segundo? xDD Muchas gracias le echaré un vistazo.

1 respuesta
Nihon

#204 XD Hombre, eso depende de lo que hayas aprendido en primero. Yo no he aprendido con ese libro, pero sí con esos ejemplos para C++ para aprender lo básico.

Clicspam

Pregunta tonta, qué estoy haciendo mal para que Eclipse no me deje correr esta clase?
Me dice que no se encuentra la clase principal

package numtostring;

public class NumToString {
	static String[] stringer = {"One","Two","Three","Four",
		"Five","Six","Seven","Eight",
		"Nine","Ten"};

public static String convert(int n){
	if(n<11 && n>0){
		return stringer[n-1];
	}else{
		return "Not Found";
	}
}

public void main(String[] args){
	System.out.println(convert(4));
}
}
2 respuestas
Nihon

#206 ¿Es ese todo tu código? De ser así no funcionará de ningún modo. Una clase no es un programa y por tanto no se puede digamos... "ejecutar" por si sola. Por ejemplo tu main es un método de la clase y si no inicializas la clase, no puedes ejecutar ese main.

Lo que debes hacer es quitar ese void main de la clase, abres otra pestaña para el código principal (con el main de toda la vida) y entonces instancias tu clase. Por otro lado, no se si esa declaración de String es válida sin un constructor en la clase. Voy a ver si puedo escribir un ejemplo.

Edit: Aquí NO he puesto ningún código C++ para Java ni me he columpiado, ahem.

1 respuesta
cabron

#206

Te falta poner main como static

#207

No, en Java las clases si se pueden ejecutar por si solas, y main tiene que ser siempre miembro de una clase, su código está bien, a excepción de que le falta declarar main como static, lo que tu pones es como se haría en C++, no es posible hacer eso en Java por que no pued haber funciones sueltas que no sean métodos de alguna clase.

2 2 respuestas
Nihon

#208 Joder lo he clavao XD. La costumbre de pensar en C++.

1 respuesta
Clicspam

#208 Ostras pues ahí estaba el problema, siempre se me olvida xD, muchas gracias.

#209 Ya estaba yo flipando xD, gracias igualmente por el trabajo. Me lo guardo para cuando me ponga con C++

Tema cerrado