为什么我期望的字符串与输出不匹配?

时间:2015-04-08 00:14:47

标签: java bluej

我写了一个方法(使用BlueJ),它将用户的银行帐户信息作为单行描述返回:

public String toString()
    {
        return (acctNumber + "\t" + name + "\t" + fmt.format(balance));
    }

我为这个方法写了一个单元测试:

public void testToString()
    {
        Account account1 = new Account("Aurora", 772340912, 1000.00f);
        assertEquals("Test account toString failed.", "772340912    Aurora    $1,000.00", account1.toString());
    }

我查看了BlueJ中的“Resources”文件夹,它说:bluej.editor.tabsize=4所以我认为这意味着一个标签等于4个空格。但是,即使我在预期的输出中使用了四个空格,我的单元测试仍然失败。有任何想法吗?提前谢谢!

2 个答案:

答案 0 :(得分:1)

标签不是四个空格。 bluej.editor.tabsize=4表示BlueJ系统正在将标签呈现为四个空格。

但是,无论它们如何渲染,标签仍然是标签,与空间完全不同。 '\t' == 11,而' ' == 32" "甚至无法与int进行比较,因为它是String,而不是char 1}}。

对于预期的字符串,请使用"\t"代替" "

答案 1 :(得分:0)

选项卡是与空格字符不同的ASCII字符。这可能会导致某种不匹配,其中选项卡的ASCII代码与空间的4个ASCII代码进行比较,这将不相等。

所以只需编辑一个或另一个以便它们匹配!