IDE 和编译器的 /t 间距是否有不同的间距? (JAVA 在 IntelliJ 上)

Do IDEs and compilers have different spacing for /t spacing? (JAVA on IntelliJ)

我对编程还很陌生,刚刚开始攻读计算机科学学位。在 class 中,我接到了创建模式的任务。他们在 class 中使用 jGRASP 作为 IDE,而我使用 IntelliJ。

我使用 IntelliJ IDE 创建了一个模式来显示 "A E V",如屏幕截图 Code and output ScreenShot 中所示。我使用空格和 /t 来创建模式。 为了检查我的代码是否与他们想要的一样,我将 .java 文件和 运行 文件放在另一个名为 jGRASP 的 IDE 中。现在在 jGRASP 上,间距全部关闭 jGRASP code and output ScreenShot。我不知道是什么原因造成的。

“/t”对于不同的 IDE 有不同的间距吗?或者我需要更改某些设置吗?

很有可能。标准选项卡宽度为 8,但有些人更喜欢显示 4 列选项卡,甚至 2 列选项卡。还有一些人喜欢用制表符缩进,还有一些人喜欢用空格缩进。这就是火焰战争所争夺的东西。无论您属于哪个阵营,最糟糕的选择就是将两者混合在同一个文件中。只要所有缩进都是制表符,制表符如何显示都没有关系,它总是可以正常工作。如果没有制表符并且所有缩进都是空格,那么制表符的宽度就更不重要了。但是如果你制作一个混合文件,预计会有麻烦。

对于输出也类似:一般来说,我只会在语义上使用 Tab,就像在 TSV 中一样用于分隔记录,从不用于精确格式化,正是因为您无法控制它的查看方式。

Do IDEs and compilers have different spacing for /t spacing? (JAVA on IntelliJ)

编译器不关心。

IDE 通常具有您可以更改的默认 TAB 宽度。默认值可能 取决于主机操作系统。

真正的问题是操作系统有不同的默认值...您通常无法更改。

如果您在(比如)Windows 上编写源代码,而您的同事使用 Linux 或 Mac,就会出现问题。如果您使用 TAB 并且您不同意将您的 IDE 配置为具有相同数量的 TAB 空格,那么您的代码在您的同事看来会很难看,反之亦然。

最好的解决办法是不使用制表符进行缩进。配置您的 IDE 以使用空格进行缩进。然后您的代码将正确缩进 不考虑 IDE 或 OS 任何人用来查看它的 。请注意,现代 IDEs 可以轻松配置为将 TAB 击键转换为缩进级别的适当数量的空格。


However I think my question was a bit unclear. I was wondering why the "\t" in a print() would have different output on run I/O window.

这完全取决于控制台如何在输出流中显示 TAB 字符。将 TAB 呈现为一定数量的固定宽度空格通常由某些 OS 特定/OS 提供的软件完成。它不在 Java 的控制范围内。事实上,JVM 通常会发现如何(或者即使)这种渲染会发生,所以它不能合理地干预。

当 IDE 显示控制台输出时,IDE 负责渲染。

Would you know why the spacing in the output is different for IntelliJ vs jGRASP?

这将是实施相应工具的人员的设计决定。但我想您可以将这些工具配置为与其各自的默认设置不同的行为。检查配置设置...

但最重要的是,如果您希望控制台文本间距在所有真实/虚拟控制台中保持一致,请输出 SP 字符而不是 TAB。

终于找到解决办法了。问题确实出在两个 IDE 的制表符间距上。 jGrasp 默认使用 3 个间距制表符,而 IntelliJ for Java 使用 4 个间距。

在 jGRASP 上,如果您单击设置 > 字体 > CSD > 标签大小:取消选中按钮进行编辑。 jGrasp setup

在 IntelliJ 上更改选项卡有点困难,因为它会在您首次创建项目时创建它。

转到首选项 > 编辑器 > CodeStyle:取消选中编辑器配置支持。如果保持选中,则包中的 editorconfig 文件将覆盖 IDE 设置。 IntelliJ Code style setup

CodeStyle 下拉列表> select 文件 (Java) > 制表符和缩进 > 将制表符设置为 3 IntelliJ Java File setup 点击应用。

最后再次进入CodeStyle,点击editorconfig上的export,替换工程上的文件。

EditorConfig 文件和 editorconfig 支持选项是导致 Intellij 更加混乱的原因。