我想知道这段代码中的system.out.println()在做什么

时间:2019-10-03 23:57:28

标签: java

我不知道为什么在这些代码的末尾有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();}
    }
    }

3 个答案:

答案 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.printSystem.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进行迭代所节省的空间对于大多数应用程序可以忽略不计,并且整数覆盖了您可能要迭代的大多数值范围。