私は仕事をしています。私はやっています。これは、文字のピラミッドを出力する簡単なプログラムです。しかし、私は何か入力があっても指定されていないときに、プログラムが改行を印刷する理由を理解できません:https://i.imgur.com/gPs5oC5.png ピラミッドを逆さまに印刷すると、改行を追加する必要があります。改行はどこに印刷されていますか?小さいJavaプログラムは目に見えない改行を出力しますか?
import java.util.Scanner;
public class Test23 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
boolean state = true;
String messageL = "Length: ";
String messageD = "Position: ";
String messageS = "Shutdown!";
while(state) {
int limit = 0;
int degree;
System.out.print(messageL);
int length = input.nextInt();
while ((length < 1 && length == -1) || length > 26) {
if (length == -1) {
System.out.println(messageS + "\n");
state = false;
break;
} else {
System.out.print(messageL);
length = input.nextInt();
}
}
if (!state)
break;
System.out.print(messageD);
degree = input.nextInt();
while((degree > 1) || (degree < 0)) {
System.out.print(messageD);
degree = input.nextInt();
}
if (degree == 0)
//No newline is needed here for some reason.
length++;
else if (degree == 1)
limit = length;
//New line here for the pyramids to print symmetrically.
//System.out.println("");
for (int i = 0; i < length; ++i) {
for (int counter = 0; counter < limit; counter++) {
char letter = (char)(counter + 'A');
System.out.print(letter);
}
if (degree == 0)
limit++;
else if (degree == 1)
limit--;
System.out.println("");
}
System.out.println("");
}
}
}
'のSystem.out.println(メッセージ+ "\ n");' 'のSystem.out.println( "");' 'のSystem.out.println( "");' – Oleg
のSystem.out .println(messageS + "\ n")は、プログラムがシャットダウンしているときにのみ使用されます。最初の印刷物を取り除くと、ピラミッドは印刷されません。私が2番目を削除しても、それは違いはありません。 @Oleg – Senethys
ヒント:入力が0のときに最も内側のループはどうなりますか?あなたは本当にhttps://ericlippert.com/2014/03/05/how-to-debug-small-programs/ – Oleg