我不知道为什么在这些代码的末尾有system.out.println。这是什么,为什么在这里?
此代码是我朋友的代码,他告诉我理解此代码,而我不明白为什么在此代码后还有system.out.println。
public class Nestedlooplab2 {
public static void main(String[] args) {
for (byte i = 1; i <= 5; i++) {
for (byte j = 1; j <= i; j++) {
System.out.print(".");
}
for (byte k=1; k<=(5-i);k++) {
System.out.print("*");
} System.out.println();}
}
}
答案 0 :(得分:0)
欢迎堆栈溢出!
System.out.println()
本身只会打印换行符,例如\n
。如果要向此语句添加参数,它将打印您的参数以及换行符。
Here are the JavaDocs for println
通过写入行分隔符字符串来终止当前行。行分隔符字符串由系统属性line.separator定义,不一定是单个换行符('\ n')。
您链接的代码将打印一定数量的.
个字符和一定数量的*
个字符,而不会出现任何换行符。然后,最后的System.out.println();
将打印换行符,循环将重新开始。
输出:
.****
..***
...**
....*
.....
答案 1 :(得分:0)
您的代码输出为:
.****
..***
...**
....*
.....
如果没有System.out.println();
,输出将是:
.****..***...**....*.....
System.out.println();
为循环的每次交互在屏幕上打印一个换行符。
答案 2 :(得分:0)
首先,让我们看一下代码的输出:
.****
..***
...**
....*
.....
作为字符串,它与以下内容相同:
.****\n..***\n...**\n....*\n.....\n
默认情况下,在Java中使用System.out
会写入标准字符输出流。写入此流时,可以使用各种方法,包括System.out.print
和System.out.println
。调用print
将输出您提供给它的 exact 字符串,而调用println
将输出您提供给它的字符串,然后换行({{3 }})。如果调用System.out.println()
(无参数的println
),则将输出提供的字符串(""
),并将输出移至下一行。本质上,这意味着在代码中删除对System.out.println()
的调用将产生以下输出:
.****..***...**....*.....
此输出看起来与String完全相同。如您所见,当您仅调用\n
而没有调用System.out.print
时,输出中没有换行符(System.out.println
)。
最后,让我们在易于阅读和理解的上下文中看一下您的代码。我正在使用Java 11+功能line separator来大大简化在此处重复String的操作:
public static void main(String[] args) {
for (int i = 1; i <= 5; i++) {
System.out.println(".".repeat(i)+"*".repeat(5-i));
}
}
输出:
.****
..***
...**
....*
.....
这等效于原始输出。但是,阅读和理解正在发生的事情要很多。假设您无权使用这些功能,则可以执行以下操作:
for (int i = 1; i <= 5; i++) {
for(int rpts = 0; rpts < i; rpts++) {
System.out.print('.');
}
for(int rpts = i; rpts < 5; rpts++) {
System.out.print('*');
}
System.out.println();
}
此代码段也具有相同的输出。它的内容与您的代码段没有太大不同,因为您的代码段确实具有正确的概念。但是,它的格式更加一致,这使您自己和其他人都更容易阅读代码。请注意如何用名称rpts
标记重复项,并且(在两个示例中)迭代变量均为int。 Java程序员通常使用int进行迭代,因为使用bytes
进行迭代所节省的空间对于大多数应用程序可以忽略不计,并且整数覆盖了您可能要迭代的大多数值范围。