在为计算机约会分配编写我的代码时,我们看到四个对象的数组的兼容性,但是我的代码打印得很奇怪。 (Eclipse最初没有给我一个错误/警告)。

代码:

System.out.print("Fit between " + profile1.getTitle() + " and " + profile2.getTitle() + ": \n   " +
       + '\t' + profile1.fitValue(profile2) + '\n');

当我尝试打印出东西时,它们看起来像这样:

伊丽莎白·贝内特(Elizabeth Bennett)和伊丽莎白·贝内特(Elizabeth Bennett)之间的匹配:
90.0

伊丽莎白·贝内特(Elizabeth Bennett)和菲茨威廉·达西(Fitzwilliam Darcy)之间适合:
90.55

伊丽莎白·贝内特(Elizabeth Bennett)和罗密欧·蒙塔格(Romeo Montague)之间的搭配:
90.3

伊丽莎白·贝内特(Elizabeth Bennett)和朱丽叶·卡普莱特(Juliet Capulet)之间的搭配:
90.0

................................................... .....如此等等。

我的数字前面有一个“9”。

后来我发现了问题:我的“\n”之后有两个串联运算符(“+”)。因此,我更改了代码,删除了多余的“+”。

新代码:
System.out.print("Fit between " + profile1.getTitle() + " and " + profile2.getTitle() + ": \n   " +
       '\t' + profile1.fitValue(profile2) + '\n');

新的正确运行:

伊丽莎白·贝内特(Elizabeth Bennett)和伊丽莎白·贝内特(Elizabeth Bennett)之间的匹配:
0.0

伊丽莎白·贝内特(Elizabeth Bennett)和菲茨威廉·达西(Fitzwilliam Darcy)之间的匹配:
0.55

伊丽莎白·贝内特(Elizabeth Bennett)和罗密欧·蒙塔格(Romeo Montague)之间的搭配:
0.3

伊丽莎白·本内特(Elizabeth Bennett)和朱丽叶·卡普莱特(Juliet Capulet)
0.0

.....................................等等。

尽管庆幸地发现了我的问题,但我想知道到底是什么导致了这种情况的发生。是否有某种 eclipse 速记导致“9”的出现?还是这是由于某些 eclipse 的bug?我仍然是Java的初学者,所以我不能做出可靠的结论。

我尝试稍微修改我的代码以查看Eclipse的 react (我删除了原始“+ +”之间的空格):
System.out.print("Fit between " + profile1.getTitle() + " and " + profile2.getTitle() + ": \n   " ++
       '\t' + profile1.fitValue(profile2) + '\n');

Eclipse给了我这个警告:

这行有多个标记

token “++”上的
  • 语法错误,+
    预期的
  • 操作的无效参数++/-

  • 这是有道理的,因为++本身就是某种运算符。
    但是,有趣的是,如果在“++”之间放置空格,则警告消失。

    出于可读性考虑,我并没有粘贴整个代码,但是如有必要,我可以对其进行编辑和添加。
    对此进行一些澄清将是有帮助的。谢谢你。

    最佳答案

    问题不仅仅在于代码中的+ +。但这还与您使用 char '\t'而不是字符串 "\t"的事实有关。

    因此,当您使用System.out.println("Hello" + '\t');时,\t被当作字 rune 字,并作为\t附加到字符串中。

    但是,当您使用System.out.println("Hello" + + '\t');时,它实际上变成了System.out.println("Hello" + (+ '\t'));。因此,它被java视为int。您只能将+-符号分配给int,而不是char。

    请记住,您可以执行int i = +2-2+ +2

    并且\t的ASCII值为9。因此,它被附加到字符串上并被打印为Hello9

    关于java - Java: “9”是否出现在我的运行中是Eclipse错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31801069/

    10-09 04:59