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;
}