Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - Ogramar

Páginas: 1 2 [3] 4 5 6 7 8 ... 89
41
Buenas, el código funciona a la perfección y tiene la originalidad respecto a otras soluciones que se pueden ver en el foro de que va mostrando ambas letras de las dos palabras que se comparan (cuando existen en las dos palabras), así que todo bien ;)

Salu2

42
Buenas, todo bien, el código cumple con lo que se pedía. Como comentamos en otro hilo, 0+i es lo mismo que i, luego sobra sumarle cero ;) Aunque no es objeto de este ejercicio dejo alguna pregunta planteada para quien quiera responderla. Si cuando nos pide la cadena pulsamos enter directamente (sin introducir ningún carácter), salta un error

java.lang.StringIndexOutOfBoundsException: String index out of range: 1

¿Por qué? ¿Cómo podríamos mejorar el código para que no salte ese error?

Otra curiosidad: en la octava línea, entre usar String entradaTeclado = ""; y String entradaTeclado; ¿Cuál es la diferencia? ¿Qué efecto tiene en el programa hacerlo de una manera u otra?

Salu2

43
Buenas y bienvenido, este foro es para presentarse a la comunidad. Para escribir en los foros mira este hilo y las indicaciones que da respecto a cómo poner títulos, pegar código, etc. : https://aprenderaprogramar.com/foros/index.php?topic=1460.0

En este curso tienes ejercicios similares resueltos: https://aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193

En particular en las entregas CU00832B y siguientes puedes ver ejercicios de este tipo

Cambio el hilo al foro C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más

Salu2

44
Buenas, todo bien. Has escrito System.out.print(entradaTeclado.substring(0+i, i+1) +"\n"); pero como 0+i es lo mismo que i te podrías haber ahorrado dos caracteres de código, es decir, lo mismo da 0+i que i  :D

Salu2

45
Buenas, algún comentario. Como posibles mejoras:

a) getDuracionCancion en lugar de getDurCancion (mejor que se entienda si no es demasiado largo)

b) introducirDuracionCanciones en lugar de saludoIntroducirDuracionCancion (el saludo no es algo importante y hablamos de canciones no de una única canción)

c)  public double getDuracionDisco(){} , en lugar de  public int getDuracionDisco(){} ya que la duración de una canción se ha dicho que se expresa con decimales, luego su suma debe ser también un decimal, no un entero.

d) public void agregarCancion(String nuevoTitulo, double nuevaDuracion) en lugar de public void agregarCancion(String nuevoTitulo, int nuevaDuracion) por el mismo motivo

Salu2

46
Buenas, el ejercicio está bien resuelto aunque el constructor no es adecuado porque los valores de defecto que has tomado no son lógicos tal y como he comentado en https://aprenderaprogramar.com/foros/index.php?topic=7101.0

Tal vez inicializando con 0, false y cadena vacía los mensajes por consola deberían plantearse de otra manera, pero esto tampoco tiene demasiada importancia (el ejercicio planteaba el ser capaz de utilizar los parámetros recibidos por un método y los atributos, y eso está logrado).

Y una vez más, repito lo ya indicado: pon nombre a los temas de los foros como se indica en https://aprenderaprogramar.com/foros/index.php?topic=1460.0, por favor.

Salu2

47
Buenas, el ejercicio está bien resuelto, perfecto. Has usado como nombre de atributo yearEdicion en lugar de añoEdicion lo cual está bien pensado pues aunque Java soporta la ñ en general puede ser preferible no usarla porque a la larga puede dar problemas.

Por otro lado, repito lo ya indicado: pon nombre a los temas de los foros como se indica en https://aprenderaprogramar.com/foros/index.php?topic=1460.0, por favor.

Salu2

48
Buenas, el ejercicio está bien resuelto, te hago dos observaciones.

La primera: En lugar de inicializar nombre = "Paquito"; es preferible inicializar con "". En el hilo https://aprenderaprogramar.com/foros/index.php?topic=1948.0 se comenta algo. La lógica es que si tú inicializas con nombre Paquito todas las personas se van a llamar inicialmente al menos Paquito, y eso no es lógico. Por eso se usa la inicialización a "" que es la cadena vacía. Esto nos indicará que un objeto Persona que haya sido creado está recién creado y aún no se le ha asignado un valor a su atributo nombre. De resto todo bien

La segunda: pon nombre a los temas de los foros como se indica en https://aprenderaprogramar.com/foros/index.php?topic=1460.0, un título como Java desde Cero Ejercicio CU00623B no es correcto. Sería correcto por ejemplo Concepto de clase Java atributos constructor métodos CU00623B. Tenlo en cuenta por favor.

Salu2

49
Buenas, quizás es un tema más complicado de lo que parece a primera vista. HTML provee la funcionalidad de poder elegir un archivo desde nuestro computador local para ser enviado en un formulario. Esto se trata en el curso de HTML (en concreto en la entrega <<CU00725B enctype multipart/form-data HTML. Seleccionar archivo (type file) en formularios. Ejemplo básico>>

Con JavaScript puedes crear un botón para guardar con código del tipo <a href="data:application/xml;charset=utf-8,codigo a incluir" download="filename.html">Guardar</a>

HTML5 ha incluido un estándar para trabajar con ficheros, la especificación File API. Los navegadores antiguos no tienen soporte para esta API, pero los más modernos sí. Esta API permite arrastrar y soltar archivos y muchas otras cosas. En https://developer.mozilla.org/es/docs/Web/API/File/Using_files_from_web_applications hay algunos ejemplos.

Salu2

50
De todo un poco... / Re:Repetición de proceso en Eclipse
« : 20 de Julio 2018, 17:27 »
Buenas, para publicar en los foros debe seguirse lo que se explica en https://aprenderaprogramar.com/foros/index.php?topic=1460.0

En el curso java desde cero hay ejemplos de código similares a lo que comentas: https://aprenderaprogramar.com/index.php?option=com_content&view=category&id=68&Itemid=188

Salu2

51
Buenas paramonso, más que correcciones lo que yo planteo son sugerencias o puntos de vista (cada cual puede tener el suyo). En este ejercicio en particular, lo que planteaba es que el enunciado dice lo siguiente: "una hortaliza es un tipo de planta cultivada" y no he visto que tú hayas reflejado esto en un esquema de herencia. Por convenio, cuando se hace un diseño de programación para reflejar un esquema de herencia, una frase como "una hortaliza es un tipo de planta cultivada" se refleja en una relación entre una superclase "planta cultivada" y una subclase "hortaliza". Esta relación no veo que se refleje en tu código. Sin embargo, sí se refleja en el código https://aprenderaprogramar.com/foros/index.php?topic=3941.0 que desde mi punto de vista es más correcto. Es este código un tomate es también una planta cultivada gracias a la relación de herencia.

Salu2

52
Buenas Mary Conchys, lee por favor las recomendaciones que se dan en https://aprenderaprogramar.com/foros/index.php?topic=1460.0 , ahí se indica por ejemplo cómo poner título a los temas en los foros: debe escribirse en el título las palabras clave sobre lo que trata el hilo, y poner el código de ejercicio en mayúsculas (es decir, CU00665B en lugar de cu00665b).

Tu ejercicio está bien resuelto y cumple con lo que se pedía.

Sobre la posibilidad de imprimir la lista de cantantes desde el test, normalmente hay diferentes posibilidades para resolver las cosas (aunque a veces solo se nos ocurra una). Para ver diferentes soluciones a un ejercicio puedes escribir su código en el buscador del foro y te encontrarás con diferentes soluciones planteadas por diferentes personas. Por ejemplo puedes mirar esta solución donde se imprimen los cantantes desde el test: https://aprenderaprogramar.com/foros/index.php?topic=1549.0

Salu2

53
Tal como dices la recursividad tiene un gran potencial, pero a su vez grandes riesgos. Uno de los riesgos es precisamente lo difícil que es de seguir la traza de ejecución con métodos recursivos. La mayoría de la gente terminamos perdiéndonos, lo cual es bastante normal. Diría además que la mayoría de los programadores rehuyen en cierta medida de la recursividad por la dificultad para trazar y llegar a conclusiones sobre lo que hacen estos métodos. No obstante, tiene grandes aplicaciones y algunas de uso frecuente, por ejemplo para recorrer estructuras de directorios e ir alcanzando todas las carpetas y ficheros (que si nos fijamos bien no deja de ser una estructura de árbol, no binario, pero árbol al fin y al cabo).

Respecto a cómo pasan los parámetros en Java puede ser interesante leer esto, según lo cual todo parámetro sea tipo primitivo u objeto pasa por valor (aunque habría matices a comentar): https://www.aprenderaprogramar.com/foros/index.php?topic=49.msg2892#msg2892

Voy a intentar seguir lo que sería la traza de ejecución para un árbol con un nodo raíz y dos nodos hoja hijos. Cada llamada al método la voy a llamar ref.

Llamas al método con el parámetro 0 llamada ref1 y como izq es distinto de null y derecha es distinto de null, te devuelve una llamada ref2 con parámetro a 0 + llamada ref3 con parámetro 0. La llamada ref2 concluye con la condición base: izquierda y derecha son null, y por tanto su return devuelve 1. La llamada ref3 concluye de la misma manera, y también devuelve 1. Ahora se resuelve la llamada ref1 que estaba pendiente de tener los resultados de ref2 y ref3 para devolver su propio resultado, y el resultado que devuelve es 1+1=2 es decir, que hay 2 hojas.

Creo que quizás es útil ver las propias llamadas recursivas como un árbol (aquí ya veo árboles por todos lados), donde en la raíz tienes ref1 (+) que sería un nodo suma de sus hijos. Sus hijos son ref2 y ref3 que valen 1. De ahí que el nodo ref1 termine valiendo 2.

Voy a intentarlo con un árbol binario que tiene el nodo raíz, dos nodos hijo, ramificando el izquierdo a su vez en dos nodos hojas, y siendo el nodo derecho del raíz hoja directamente.

Aquí partimos de la llamada ref1 que deriva a ref2 + ref3. ref3 devuelve un 1, mientras que ref2 devuelve ref4+ref5. Como resultado de ref4 + ref5 obtenemos 1+1. Esto se suma al resultado de ref2 que es 1. Finalmente en ref1 suma 2 más 1 obteniendo 3, que es el número de nodos hoja que tenemos. La cuestión aquí es que el resultado ref1 queda pendiente de poder operarse hasta que se tengan resultados para ref2 y ref3. A su vez ref2 queda pendiente de operarse hasta que se tengan resultados de ref4 y ref5...

Todo pasa por valor: al final lo que terminas haciendo son sumas. Partes de los resultados base de un nodo hoja: un 1. El resto de resultados se van obteniendo agregando esos resultados base.

Desde luego todo esto es complejo de ver y a lo mejor dentro de un rato no estoy satisfecho con esta explicación, pero por lo menos se ha intentado ;)

Salu2

54
Gracias por llamarme "maestro" Kabuto, yo creo que el maestro eres tú  ;) Todo este tema de los árboles es muy interesante pues son modelos matemáticos con aplicaciones prácticas muy interesantes. De hecho hay muchas clases del API Java que son implementaciones de árboles, no conozco el detalle de las implementaciones pero estoy pensando en TreeMap y otras. Todo esto se expande hacia otra cosa igualmente interesante como son estructuras de datos como montículos, pilas y colas, etc. Hay estructuras de datos ordenadas como montículos ordenados que pueden ser bastante eficientes. A quien le interese, ahí tiene materia para entretenerse...

Salu2

56
Buenas, he adaptado el código al compilador e ide que uso (Codeblocks) cambiando scanf_s por scanf y otros pequeños cambios

Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

int main()
{
int sueldo[100];
char op;
int i,j, D, arc, empleados=0;
float promedio, suma=0;

printf("\nCuantos sueldos desea ingresar?: ");
scanf("%i", &D);

if (D > 0 && D <= 100) {
do {
for (i = 0; i < D; i++) {

system("cls");

printf("Ingresa el sueldo del empleado %i: ", i + 1);
scanf("%i", &sueldo[i]);
suma += sueldo[i];

printf("\nDesea introducir un sueldo? [s/n]: ");
fflush(stdin);
while (getchar() != '\n');
scanf("%c", &op);
if (op == 'n' || op == 'N') {
break;
}

}

} while (op == 's'||op == 'S');

system("cls");

//-------------------------Total de nómina de la empresa-----------------------
printf("\nTOTAL DE NOMINA: %.2f", suma);
//-----------------------------------------------------------------------------

//------------------------Sueldos ordenados de menor a mayor------------------
for (i = 0; i < D; i++)
for(j = i + 1; j < D; j++)
if (sueldo[i] > sueldo[j]) {
arc = sueldo[i];
sueldo[i] = sueldo[j];
sueldo[j] = sueldo[i];
}

printf("\nLISTA ORDENADA DE SUELDOS");
for (i = 0; i < D; i++) {
printf("\n%i", sueldo[i]);
}
//-----------------------------------------------------------------------------

//-----------------------Cantidad de empleados capturados----------------------
empleados = empleados + i;
printf("\nCANTIDAD DE EMPLEADOS: %i", empleados);
//-----------------------------------------------------------------------------

//---------------------Promedio de sueldo de la nómina-------------------------
promedio = suma / D;
printf("\nPROMEDIO DE SUELDO: %.2f", promedio);
//-----------------------------------------------------------------------------

//----------Cantidad de empleados con un sueldo superior al promedio--------
if (sueldo[i] > promedio) {
printf("\nCANTIDAD DE EMPLEADOS CON SUELDO SUPERIOR AL PROMEDIO: %i", sueldo[i]);
}
//-----------------------------------------------------------------------------

}
else {
printf("\nNumero de sueldos a ingresar no valido.\n\nSolo se permite ingresar hasta 100 sueldos.");
}

system("pause>null");
return 0;
}

Al ejecutar obtengo:


¿Cuántos sueldos desea ingresar? 2
Ingresa el sueldo del empleado 1: 100

¿Desea introducir un sueldo? [s/n]: s
Ingresa el sueldo del empleado 2: 200

¿Desea introducir un sueldo? [s/n]: n

TOTAL DE NOMINA: 300.00
LISTA ORDENADA DE SUELDOS
100
200
CANTIDAD DE EMPLEADOS: 2
PROMEDIO DE SUELDO: 150.00
CANTIDAD DE EMPLEADOS CON SUELDO SUPERIOR AL PROMEDIO: 318767123

Lo primero que parece ocurrir es que el programa no está bien planteado desde el punto de vista de la algoritmia. Si le digo que quiero introducir dos sueldos, lo lógico es que me pida dos sueldos sin preguntarme en cada ocasión si deseo introducir un sueldo otra vez (ya que ya le he dicho antes cuántos quería introducir).

Tener el for dentro del while (op == 's'||op == 'S'); con la pregunta de si se quiere introducir un sueldo en cada ocasión no parece un buen planteamiento.

El problema de por qué te aparecen esos números extraños habría que estudiarlo, pero puede estar relacionado con que no estés usando adecuadamente los tipos de datos. Por ejemplo sueldo son valores int mientras que suma lo defines como float. Posiblemente haya que definirlo como int, o bien realizar una conversión de tipos. Si no se manejan bien los tipos pueden ocurrir "cosas raras".

Para ver planteamientos de algoritmia, diagramas de flujo, etc. está disponible el curso "Bases de la programación nivel I" en https://aprenderaprogramar.com/index.php?option=com_content&view=category&id=28&Itemid=59

Los fundamentos del lenguaje C están explicados en el curso "Curso básico de programación lenguaje C desde cero" disponible en https://aprenderaprogramar.com/index.php?option=com_content&view=category&id=82&Itemid=210

Salu2

57
Buenas, para quien lea este hilo, he adaptado el código a mi compilador (he usado el IDE Codeblocks) p.ej. en lugar de scanf_s he usado scanf... Además he introducido unas líneas de prueba. El único archivo que he tocado es el main.c que he dejado así:

Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include "juego.h"

int main()
{

int Juego;
char x, y;
printf("Hello world!\n");
printf("\t\t\tJUEGO ROCA, PAPEL Y TIJERAS\n");
printf("Bienvenidos elijan un arma\nR.-Roca\nP.-Papel\nT.-Tijeras\n");
printf("Arma jugador 1: [ ]\b\b");
fflush(stdin);
scanf("%c", &x);
toupper(x);
printf("Arma jugador 2: [ ]\b\b");
fflush(stdin);
scanf("%c", &y);
toupper(y);

if (x == 'R' &&y == 'R')
{
Juego = 1;
}
else
if (x == 'P' &&y == 'P')
{
Juego = 2;
}
else
if (x == 'T' &&y == 'T')
{
Juego = 3;
}
if (x == 'R' &&y == 'P')
{
Juego = 4;
}
else
if (x == 'P' &&y == 'T')
{
Juego = 5;
}
else
if (x == 'T' &&y == 'R')
{
Juego = 6;
}
if (x == 'R' &&y == 'T')
{
Juego = 7;
}
else
if (x == 'P' &&y == 'R')
{
Juego = 8;
}
else
if (x == 'T' &&y == 'P')
{
Juego = 9;
}
else
{
Juego = 0;
}

    if (x==65) {printf("Has introducido A mayuscula"); Juego=99;}

switch (Juego)
{
case 1:
printf("\nR-R Empate");
break;
case 2:
printf("\nP-P Empate");
break;
case 3:
printf("\nT-T Empate");
break;
case 4:
papel_cubre_roca(x, y);
break;
case 5:
tijeras_cortan_papel(x, y);
break;
case 6:
roca_rompe_tijeras(x, y);
break;
case 7:
roca_rompe_tijeras(x, y);
break;
case 8:
papel_cubre_roca(x, y);
break;
case 9:
tijeras_cortan_papel(x, y);
break;
    case 99:
        printf("\nProblema detectado");
break;
case 0:
printf("\nCARACTER INVALIDO");
break;
}
system("pause>null");
return 0;
}

El problema parece estar en cuestiones de base de la programación en C. Un char no puede compararse usando == , un == es un comparador numérico. Si se usa el tipo char, C utiliza además del carácter su equivalente numérico en ASCII. Por ejemplo la A mayúscula es el valor numérico 65, la B mayúscula el 66 y así sucesivamente. He introducido

if (x==65) {printf("Has introducido A mayuscula"); Juego=99;}

para ver si detecta que se introduce una A.

En el case he introducido

    case 99:
        printf("\nProblema detectado");
        break;

Luego ejecuto el programa e introduzco A y T como armas de los jugadores y me aparece el mensaje "Has introducido A" y "Problema detectado"

Posiblemente debería usarse otro tipo de comparador de cadenas como strcmp si se quiere hacer la comparación no numérica. Otra opción es usar los equivalentes numéricos ASCII de cada letra.

También hay que tener cuidado con la posible presencia de caracteres ocultos o en el búfer cuando se hagan comparaciones.

En resumen creo que sería bueno revisar cuestiones de base del lenguaje C para detectar todos los cambios a realizar. Para adquirir los conceptos básicos de C es recomendable seguir el curso básico de programación en lenguaje C desde cero disponible en https://aprenderaprogramar.com/index.php?option=com_content&view=category&id=82&Itemid=210

Salu2

58
Buenas, por si alguien lee este hilo: para tener almacenadas las notas de los años escolares necesitamos almacenar junto a la nota el año escolar al que pertenece dicha nota. Por ejemplo supongamos que 20962097 significara año escolar dos mil noventa y seis - dos mil noventa y siete. Parece que lo más razonable sería almacenarlo en la tabla Nota, que tendría como campos:

Nota: CodigoNota FK - CodigoMateria PK - CedulaAlumno FK - Nota - Trimestre - AñoEscolar

De esta forma se podrían consultar las notas de cierto alumno para cierto año escolar (y trimestre si se quiere).

En lo referente al cambio de alumno de curso, dado que CodigoNivel está asociado a un curso y en la tabla Alumno CodigoNivel está presente, basta con cambiar el CodigoNivel en la tabla Alumno para cambiar el alumno de curso.

Desde mi punto de vista faltarían claves para tablas como docente o alumno. Cada docente creo que sería conveniente que llevara un IdDocente y cada alumno un IdAlumno. Podría pensarse en usar la cédula como clave, pero no es recomendable por varios motivos, entre otros que sería un dato a introducir por un humano y por tanto sería susceptible de error, cosa que no ocurre cuando se establece la clave como autoincremental en la base de datos.

Salu2

59
Buenas, para escribir en los foros deben seguirse las indicaciones que se dan en https://aprenderaprogramar.com/foros/index.php?topic=1460.0 donde se explica cómo poner título a los temas, cómo pegar código, etc.

Si no se tienen las bases de Java fundamentales recomendamos seguir el curso Java desde cero: https://aprenderaprogramar.com/index.php?option=com_content&view=category&id=68&Itemid=188

Para este tipo de ejercicios es conveniente saber plantear problemas de algoritmia básica, para ello es útil seguir el curso "Bases de la programación nivel I" disponible en https://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=28&Itemid=59

Aquí dejo una modificación del código para orientar a quien revise este hilo:

Código: [Seleccionar]
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        int sumaPositivos = 0;

     
        Scanner sc=new Scanner(System.in);
        int n;
        do {
            System.out.println("Ingresa un numero; cuando quieras terminar escribe 98765");
            n= sc.nextInt();
            if(n==0){
                System.out.println("El numero "+n+" es Cero");
            } else{
                if(n>0 && n!= 98765){
                    System.out.println("El numero "+n+" es positivo");
                    sumaPositivos = sumaPositivos + n;
                }else{
                    System.out.println("El numero "+n+" es negativo");
                }
            }
        }while(n != 98765);

        System.out.println("la suma de los numeros positivos introducidos es "+sumaPositivos);
    }
}

Salu2

60
Buenas, para escribir en los foros deben seguirse las indicaciones que se dan en https://aprenderaprogramar.com/foros/index.php?topic=1460.0 donde se explica cómo poner título a los temas, cómo pegar código, etc.

Si no se tienen las bases de Java fundamentales recomendamos seguir el curso Java desde cero: https://aprenderaprogramar.com/index.php?option=com_content&view=category&id=68&Itemid=188

En el código indicado lo que se usa es una expresión regular para buscar un patrón dentro de una cadena de texto (en este caso dentro del código html de una página web). Para interpretar la expresión regular tenemos que:

String pattern = "<" + tag + ".*\\/?>";

La cadena comienza por "<" seguida del tag indicado. En este caso debemos poner simplemente p o simplemente h2 (según lo que queramos buscar), porque si pones String tag ="<p>" estarías repitiendo dando lugar a que se buscara <<p> lo cual no es correcto.

Por tanto pondríamos String tag = "p"; ó String tag = "h2"; por ejemplo.

Luego el . indica "cualquier carácter". El * es un metacarácter que se usa para indicar que el carácter anterior ocurre cero o una o más de una vez. Es decir, cualquier número de veces. Por tanto tenemos ya <h2> Cualquier cantidad de caracteres

\\ es la cadena de escape o backslah en las expresiones regulares de Java.

? indica ocurrencia ninguna o una vez. Es decir, que podría existir el carácter / ninguna o una vez.

Hay mucha información sobre expresiones regulares en Java en internet.

Haciendo esta pequeña modificación del código:

Código: [Seleccionar]
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class getTag2Html {

   public static void main (String[] args) throws IOException {
      String tag = "h2";
     
                URL web = new URL("http://www.insalfonscostafreda.cat/web/");
      //comprobar que hi hagi dos paràmetres a l'entrada
     
                System.out.println("Buscando en : "+web + " la etiqueta h2");
         // patró de cerca regexp
         String pattern = "<" + tag + ".*\\/?>";

         //Iniciem la connexió
      web.openConnection();

        BufferedReader in = new BufferedReader( new InputStreamReader(web.openStream()));

        File f = new File("prueba_apr_eac2.xml");
        BufferedWriter bw;
        bw = new BufferedWriter(new FileWriter(f));
        String inputLine;
        while ((inputLine = in.readLine()) != null) {
           
            if(inputLine.contains(tag)) {
               
                System.out.println(inputLine);
                bw.write(inputLine + "\n");
            }
        }
        bw.close();
        in.close();   
   }
}

He obtenido este resultado:

Buscando en : http://www.insalfonscostafreda.cat/web/ la etiqueta h2
h1, h2, h3, h4, h5, h6, .site-title {
<h2 class="item-title" itemprop="headline">
</h2>
<h2 class="item-title" itemprop="headline">
</h2>
<h2 class="item-title" itemprop="headline">
</h2>
<h2 class="item-title" itemprop="headline">
</h2>
<h2 class="item-title" itemprop="headline">
</h2>
<h2 class="item-title" itemprop="headline">
</h2>
<h2 class="item-title" itemprop="headline">
</h2>




Además como en el código está definido que se cree un archivo xml donde se guarden estos resultados, se ha creado dicho archivo.

Salu2

Páginas: 1 2 [3] 4 5 6 7 8 ... 89
Esto es un laboratorio de ideas...
Aprender a programar

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".