Saltar a contenido


Foto

Las dudas de Miles en programación.


  • Debes iniciar sesión para poder participar
7 respuestas en este hilo

#1 Miles Wolf

Miles Wolf
  • Administradores
  • 17007 mensajes

Publicado 12 March 2016 - 01:06 PM

Jelous.
 
Estoy empezando con Java (usamos Eclipse si sirve de algo saberlo). Hemos empezado con lo del diseño modular, funciones y tal, pero la verdad es que estoy liadísimo, más que nada porque no termino de ver el tema de la estructura y tal...
 
La cosa es que estoy con una actividad que me pide lo siguiente:
 
1. Ejercicio01.java: crea una función  double pideDouble( String pregunta)  encargada de mostrar por consola la pregunta pasada como parámetro, pedir un número por consola (si el usuario no introduce un número se ha de volver a pedirlo repitiendo el proceso hasta que el usuario introduzca un valor numérico) y retornar el número introducido como un double .
 
Más o menos he picado esto, pero no termino de sacarlo:
 
public class ejercicio01
{
	public static void main(String []args)
		
	{
		
		do{

		//MOSTRAR MENSAJE PARA PEDIR VALOR UTILIZANDO PARAMETRO STRING PROPORCIONADO POR main
			public static double pideDouble(String pregunta)
			{
				
			}
			
			
		try {

		//PEDIR DATO POR TECLADO Y CONVERTIR CON Parse A NUMERICO;
			
		
			InputStreamReader isr=new InputStreamReader(System.in);
			BufferedReader br=new BufferedReader(isr);	
			System.out.print(mensaje);
			numero=Double.parseDouble(br.readLine());
			
		} catch (IOException e){ // también serviria java.lang.NumberFormatException e

		System.out.println("El valor introducido no es un número.");

		continue; // esta instrucción permite repetir el bucle de nuevo , solo se ejecutará si el dato introducido //por el usuario no es numérico


		}// fin codigo del catch


		} while (false); // para que repita solo si hay error en introducción de dato con el continue 

		return valor; // devuelve valor numerico 

		}// fin funcion

}

(algunas de las anotaciones son del profe)

 

Estoy hecho la picha un lío completamente. xD ¿Alguien me ayuda?


b3UcR5h.png


#2 Knudow

Knudow
  • Administradores
  • 21792 mensajes

Publicado 12 March 2016 - 01:15 PM

El profesor os dió una plantilla o algo con anotaciones simples? Quiero verla xD Porque no se si las cosas liosas que veo ahí es puesto por tí o si el profesor ha hecho la plantilla un poco complicada porque sí xD

#3 Bkron

Bkron
  • Administradores
  • 8610 mensajes

Publicado 12 March 2016 - 01:35 PM

Primero, lo mismo que Knudow, el profesor os ha dado una plantilla? Puedes ponerla? Cuales son sus anotaciones?

Segundo, la indentación duele (me refiero a las tabulaciones de las líneas. Cuando algo va dentro de algo (sea un bucle, una condición, una función...) pon una tabulación más para que sea más visible la estructura del código. En otros lenguajes como Python además es obligatorio indentar bien porque es como estructura el código.

Tercero estás declarando el método pideDouble dentro de otro método, el main, y esto es algo que no se puede hacer en Java, al menos no así por las bravas. tenedría que estar dentro de la clase ejercicio01 pero fuera del main, y el main lo llamaría dentro de su propio código.

Cuando contestes a esto seguimos.



#4 Miles Wolf

Miles Wolf
  • Administradores
  • 17007 mensajes

Publicado 12 March 2016 - 02:20 PM

A ver. Primero de todo, sé que lo que he colgado es un desbarajuste total. A eso llego. xD Porque como digo, esto que hemos empezado ahora me está liando mucho, y eso que no soy de los que se asustan al encontrarse cosas así, pero es que estoy que no sé por dónde cogerlo. xD

 

Entonces, la plantilla del profe es para saber cómo hacer que el proigrama repita la petición del número si no se introduce un valor numérico, la plantilla, tal cual es esta:

do {

//MOSTRAR MENSAJE PARA PEDIR VALOR UTILIZANDO PARAMETRO STRING PROPORCIONADO POR main

try {

//PEDIR DATO POR TECLADO Y CONVERTIR CON Parse A NUMERICO;

} catch (IOException e) { // también serviria java.lang.NumberFormatException e

System.out.println("Valor introducido incorrecto");

continue; // esta instrucción permite repetir el bucle de nuevo , solo se ejecutará si el dato introducido //por el usuario no es numérico


}// fin codigo del catch


} while (false); // para que repita solo si hay error en introducción de dato con el continue 

return valor; // devuelve valor numerico 

}// fin funcion

Lo de la tabulación, lo sé. En lo que hago yo desde cero sí que lo pongo bien, sólo que aquí con el lío que llevo la tabulación era lo que menos me preocupaba. xD


b3UcR5h.png


#5 Bkron

Bkron
  • Administradores
  • 8610 mensajes

Publicado 12 March 2016 - 03:41 PM

Vale, ya veo un poco como va la cosa.

De primeras creo que tu profesor hace las cosas de una forma un poco rarita (eso de poner un "while (false)" y un "continue" que se salte esa condición...), pero te puedo decur que todo ese bloque de código tiene que ir dentro del método pideDouble



#6 Miles Wolf

Miles Wolf
  • Administradores
  • 17007 mensajes

Publicado 12 March 2016 - 04:06 PM

Uhm... Vale CREO que te entiendo. 

 

Luego por la noche lo miro, que salgo ya pal curro.

 

Gracias majo.


b3UcR5h.png


#7 Bkron

Bkron
  • Administradores
  • 8610 mensajes

Publicado 12 March 2016 - 04:45 PM

Por si acaso: cuando digo método quiero decir función (así es como se llaman en Java), pero como veo que las conoces como funciones, mejor las llamo así para no liarte xD



#8 Knudow

Knudow
  • Administradores
  • 21792 mensajes

Publicado 12 March 2016 - 05:29 PM

Creo que la cosa va así.
 

main()
{
	pideDouble("Probando, dame un numerito");
}

double pideDouble(String texto)
{
	1) Declarar variable valor
	do {

	//MOSTRAR MENSAJE PARA PEDIR VALOR UTILIZANDO PARAMETRO STRING PROPORCIONADO POR main
	2) Sacar texto "texto" por pantalla

	try {

	//PEDIR DATO POR TECLADO Y CONVERTIR CON Parse A NUMERICO;
	3) Leer teclado
	4) Guardar en valor el parseo

	}
	catch (IOException e)
	{ // también serviria java.lang.NumberFormatException e

		System.out.println("Valor introducido incorrecto");

		continue; // esta instrucción permite repetir el bucle de nuevo , solo se ejecutará si el dato introducido //por el usuario no es numérico
	}// fin codigo del catch


	} while (false); // para que repita solo si hay error en introducción de dato con el continue 

	return valor; // devuelve valor numerico 

}// fin funcion





1 usuario(s) está(n) leyendo este hilo

0 miembros, 1 visitantes, 0 usuarios anónimos