Java - Empezando a programar, necesito una ayudita

 
Vista:

Empezando a programar, necesito una ayudita

Publicado por Jonatan (3 intervenciones) el 28/11/2018 11:22:46
Buenos dias, He empezado un modulo de programacion a distancia y estoy aun un poco verde.
Llevo unos dias intentando resolver un ejercicio que me han mandado, pero por muchas vueltas que le doy no encuentro solución(Seguramente será muy sencillo para algunos, pero a mi se me está haciendo todo un mundo).

Me piden esto:
(Con una variable x con un Math.random que puede ser comprendido desde 10 a 19).
Que se muestre esto en la consola: (Solo con bucles FOR)

10 11 12 13 14 15 ** 17 18 19

------------------ 16 --> aquí va el 16

Los 5 números posteriores son: 17 18 19 20 21

Los 5 números anteriores son: 15 14 13 12 11

-------------------------------------------------------------------------------------------------------------------------------------------
Tengo hecho lo siguiente:
1
2
3
4
5
6
7
int x = (int)(Math.random()*10+10);
String  asterisco  = "**";
 
System.out.println(x);
 
for (int a=10; a<=19 ; a++){
    System.out.print(a+ " ");

pero claro esto solo muestra una secuencia de numeros desde 10 a 19.Lo que no se como hacer es que cuando el numero sea X, me ponga esta sucesion de numeros y en el numero X ponga los 2 asteriscos.

Las 2 ultimas lineas son bastante fáciles de hacer , poniendole a A=x+5 sacamos los 5 numeros posteriores y a la inversa para los anteriores.

A ver si podeis ayudarme a ver la solución, que seguramente lo estaré haciendo mas difcil de lo que realmente es.
Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Empezando a programar, necesito una ayudita

Publicado por Kabuto (1381 intervenciones) el 28/11/2018 23:51:06
Para sustituir el numero por asteriscos, has de usar un if
Cuando el indice del for coincida con el numero x, en lugar de imprimir el numero, imprimimos los asteriscos.

Para conseguir la segunda linea, la flecha esa, básicamente es repetir el mismo bucle pero con ligeros cambios

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int x = (int)(Math.random()*10+10);
String  asterisco  = "**";
 
System.out.println(x);
 
for (int a=10; a<=19 ; a++){
	if (a == x)
		System.out.print(asterisco + " ");
	else
		System.out.print(a+ " ");
System.out.println(); //Salto de linea
 
for (int a=10; a<=19 ; a++){
	if (a == x)
		System.out.print(a);
	else
		System.out.print("---");
}
System.out.println("> aqui va el " + x);
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Empezando a programar, necesito una ayudita

Publicado por Jonatan (3 intervenciones) el 30/11/2018 18:09:28
Muchisimas gracias por la ayudita! Era facil pero mi cabeza aun explota buscando soluciones jaja, te lo agradezco saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Empezando a programar, necesito una ayudita

Publicado por Jonatan (3 intervenciones) el 01/12/2018 11:50:44
Ahora tengo otro problema con otro ejercicio, tengo que aprender a concatenar caracteres con bucles for anidados, y le doy vueltas y pruebo pero nada. os expongo el nuevo problema:

tengo que hacer lo siguiente:
La primera mesa elegida es columna 3, fila 3
La segunda mesa elegida es columna 0, fila 2
01234
0 -----
1 -----
2 *----
3 ---*-
4 -----




---------------------------------------------------------------------------------------
con 2 bucles for tengo que hacer esto de abajo, que ponga asterisco en la columna y linea que corresponda


0 -----
1 -----
2 *----
3 ---*-
4 -----

lo tengo hecho mas o menos asi, pero no me da resultado, imagino que se parecerá mucho al del ejericio anterior

int columna ;
int fila ;
int columna2 ;
int fila2 ;
String linea = "-";
String asterisco = "*";


do{

columna = (int) (Math.random()*5);
fila = (int) (Math.random()*5);
columna2 = (int) (Math.random()*5);
fila2 = (int) (Math.random()*5);

}while(columna == columna2 | fila==fila2);

System.out.println ("La primera mesa elejida es columna "+ columna + ", fila "+ fila );
System.out.println("La segunda mesa elejida es columna "+columna2 + ", fila "+ fila2);
System.out.print("01234");
System.out.println(" ");

for (int a = 0 ; a<=4; a++){
System.out.println(a);
if (a==fila){
System.out.print(asterisco);
}else
System.out.print(linea);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Empezando a programar, necesito una ayudita

Publicado por Kabuto (1381 intervenciones) el 01/12/2018 21:22:24
Sí, necesitas dos bucles anidados.
Lo primero es intentar "dibujar" ese gráfico sin preocuparte de los asteriscos que representan mesas, que solo salgan las lineas.

Al usar dos bucles, el primer podemos decir que representará las filas. Así que lo primero que ha de imprimir es el número de fila.
Luego vendría el segundo bucle, el que representará columnas y se encargará de dibujar una linea por cada columna.
Acabado el segundo bucle, el primero aún ha de hacer otra tarea, y es hacer un salto de linera para que cuando vuelva a repetirse este primer bucle, comience en la siguente fila.

Algo así:
1
2
3
4
5
6
7
8
9
for (int f = 0; f < 5; f++)
{
    System.out.print(f);
    for (int c = 0; c < 5; c++)
    {
        System.out.print(linea);
    }
    System.out.println();
}

Vale, esto deberia darnos ese gráfico, pero solo con líneas.
Ahora habría que hacer que nos ponga asteriscos en los sitios adecuados
Y es tan facil como preguntar si el indice del primer bucle (que representa la fila) y el indice del segundo bucle (la columna) coinciden con la fila y columna de la primera mesa o bien con la de la segunda mesa, en cuyo caso, imprimimos asterisco.
Si no, pues sacamos linea:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
for (int f = 0; f < 5; f++)
{
    System.out.print(f);
    for (int c = 0; c < 5; c++)
    {
        //Preguntamos por mesa1
        if (f == fila && c == columna)
            System.out.print(asterisco);
        //Preguntamos por mesa2				
        else if (f == fila2 && c == columna2)
            System.out.print(asterisco);
        else
            System.out.print(linea);
    }
    System.out.println();
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar