「X」をxで出力するプログラムを取得しようとしています。すなわち:
xxx xxx
xxx xxx
xxx xxx
xxxxxx
xxx xxx
xxx xxx
xxx xxx
これは私がこれまでに行ったことです:
import java.util.Scanner;
public class CustomXfactor {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
boolean quit = false;
int i=0, a=0, c=0;
System.out.printf("length must be between 16 and 120\n");
//Ask for desired length
System.out.printf("Please enter the length (0 to exit):\n");
int length = in.nextInt();
int spaces = (length-length+1), //Calculate spaces before the first leg
innerSpaces = (length-6); //Calculate the inner spaces -6
//because there is 6 Xs which are
//the form the legs
while(!quit){
//Print first half of the X
for (i=0;i<(length/2);i++){
//First XXX leg
System.out.printf("XXX");
//Space between the legs
for (a=length-6;a<innerSpaces;a++){
System.out.printf(" ");
}
//Second XXX leg
System.out.printf("XXX\n");
//SPACES
for (c=0;c<(spaces);c++){
System.out.printf(" ");
}
spaces++;
innerSpaces--;
}
quit = true; //Change boolean to break while loop
}//END of while loop
}//END of method main
}//END end of class CustomXfactor
私の数学の問題は26行目にあります。Xの脚の間に正しいスペースを印刷するためのループを取得しておらず、ループするときに1つを取り除いています。
ご覧のとおり、これはXの半分にすぎませんが、こちら側を取得したら、それを逆にして残りを生成できます。
そこでの私の数学の助けをいただければ幸いです。