sonidos samples refraction productions para librerias libreria house gratis fruity java loops printing for-loop nested

java - samples - refraction productions gratis



¿Tiene problemas para usar For Loops para hacer que dos triángulos de diferentes caracteres encajen en un rectángulo? (5)

Ejemplos de entrada:

3 4

Ejemplos de salida (supongamos que espacios = nuevas líneas)

QQQH QQHH QHHH QQQQH QQQHH QQHHH QHHHH

Hasta ahora, el fragmento de código que intenta imprimir esto es (suponiendo que todas las variables están predefinidas):

public int getSize() { for (int i = size; i > 0; i--){ for (int j = 1; j < size; j++){ out.print("Q"); out.print("H"); } out.println(""); } return 0; }

Simplemente imprime: (suponiendo que espacios = nuevas líneas)

QHQHQHQHQH QHQHQHQHQH QHQHQHQHQH QHQHQHQHQH QHQHQHQHQH

Para una entrada de 5. No estoy muy seguro de cómo imprimir solo el número de veces de su valor entero respectivo. ¿Alguien puede explicar?


Esto funciona si la entrada es 4, por ejemplo, cambiarla a cualquier número

public int getSize() { int cnt = 0; int i,j,k = 0; for ( i = 4; i > 0; i--){ for ( j = 0; j < i; j++){ System.out.print("Q"); } cnt ++; for( k = 0 ; k <cnt ; k++) { System.out.print("H"); } System.out.println(""); } return 0; }

salida es

QQQQH QQQHH QQHHH QHHHH


Podrías romper el bucle interno dos, así:

for (int i = size; i > 0; i--) { for (int j = 0; j < i; j++) { out.print("Q"); } for (int j = i; j < size + 1; j++) { out.print("H"); } out.println(); }

Salida:

QQQH QQHH QHHH QQQQH QQQHH QQHHH QHHHH

O si no quiere romper el ciclo, puede usar el operador ternario:

for (int i = size; i > 0; i--) { for (int j = 0; j < size + 1; j++) { out.print(j < i ? ''Q'' : ''H''); } out.println(); }


Prueba esto

for (int i = 0; i < size; i++) { for (int j = 1; j <= size-i; j++) { System.out.print("Q"); } for (int k = 0; k <= i; k++) { System.out.print("H"); } System.out.println(""); }


prueba este bloque de código en su lugar:

int j=0; for (int i = size; i > 0; i--) { j=0; while(j < i) { out.print("Q"); j++; } j=i; while(j < size+ 1) { out.print("H"); j++; } out.println(); }


Probado con entradas de muestra. Funcionando bien

public int getSize() { for (int i = 1; i < size+1; i++) { for (int j = 0; j < size+1; j++) { int Qtimes = size-i; if(j <= Qtimes) { System.out.print("Q"); } else{ System.out.print("H"); } } System.out.println(""); } return 0; }