我对编程很陌生,刚刚开始攻读计算机科学学位。在课堂上,我被分配了创造模式的作业。在我使用IntelliJ时,他们在课堂上使用jGRASP作为其IDE。
我使用IntelliJ IDE创建了一个模式,以显示屏幕截图Code and output ScreenShot中显示的“ A E V”。我使用空格和/ t创建模式。 为了检查我的代码是否与他们想要的代码相同,我获取了.java文件并在另一个名为jGRASP的IDE中运行了该文件。现在在jGRASP上,间距全部为jGRASP code and output ScreenShot。我不知道是什么原因造成的。
“ / t”对于不同的IDE是否具有不同的间距?还是需要更改某些设置?
答案 0 :(得分:1)
很有可能。标准制表符宽度为8,但有些人更喜欢显示4列制表符,甚至显示2列制表符。还有一些人倾向于使用制表符缩进,而某些人则倾向于使用空格进行缩进。这是战斗所需要的东西。无论您处于哪个营地,最糟糕的选择就是将两者混合在同一文件中。只要所有缩进都是制表符,制表符的显示方式都无所谓,它总是可以的。如果没有制表符并且所有缩进都是空格,那么制表符宽度的大小就无关紧要。但是,如果您制作混合文件,那就麻烦了。
类似地,对于输出:通常,我只会像在TSV中那样在语义上使用Tab来分隔记录,绝不会进行精确的格式设置,正是因为您无法控制如何查看它。
答案 1 :(得分:1)
IDE和编译器的/ t间距是否不同? (IntelliJ上的JAVA)
编译器不在乎。
IDE通常通常具有可以更改的默认TAB宽度。默认可能取决于主机操作系统。
真正的问题是操作系统具有不同的默认值……您通常无法更改。
如果您在(例如)Windows上编写源代码并且您的同事使用Linux或Mac,则会出现问题。如果您使用TAB,但您不同意将IDE配置为具有相同数量的TAB空间,那么您的代码对您的同事来说将很难看,反之亦然。
最好的解决方案是不要使用TAB字符进行缩进。配置您的IDE以使用空格进行缩进。这样,您的代码将正确地缩进 ,无论任何人用来查看它的IDE或操作系统。请注意,可以将现代IDE轻松配置为将TAB击键转换为适合缩进级别的适当数量的空格。
但是我认为我的问题有点不清楚。我想知道为什么print()中的“ \ t”在运行I / O窗口上会有不同的输出。
这完全取决于控制台如何在输出流中显示TAB字符。将TAB渲染到一定数量的固定宽度空间通常是由某些特定于OS或OS提供的软件完成的。它超出了Java的控制范围。确实,JVM通常会发现如何(甚至可以)发生这种渲染,因此无法合理地干预。
当IDE显示控制台输出时,IDE将负责呈现。
您知道为什么IntelliJ和jGRASP的输出间距不同吗?
那将是实施相应工具的人员的设计决定。但是我想您可以配置这些工具使其行为与各自的默认设置不同。检查配置设置...
但是最重要的是,如果您希望所有真实/虚拟控制台之间的控制台文本间距一致,则输出SP字符而不是TAB。
答案 2 :(得分:1)
最后找到了解决方案。实际上,问题出在两个IDE的制表符间距上。默认情况下,jGrasp使用3个空格选项卡,而IntelliJ for Java使用4个空格。
在jGRASP上,如果单击设置>字体> CSD>制表符大小:取消选中按钮即可进行编辑。 jGrasp setup
在IntelliJ上,更改选项卡有点困难,因为它是在您首次创建项目时创建的。
转到首选项>编辑器> CodeStyle:取消选中编辑器配置支持。如果保持选中状态,则程序包中的editorconfig文件将覆盖IDE设置。 IntelliJ Code style setup
CodeStyle下拉列表>选择文件(Java)>制表符和缩进>将制表符设置为3 IntelliJ Java File setup 点击应用。
最后再次转到CodeStyle,然后在editorconfig上单击“导出”以替换项目上的文件。
EditorConfig文件和editorconfig支持选项使Intellij更加混乱。