-1

以下是相关代码:

public static void printBoarders (Territory x) 
{
    int t = 0 ; 
    int n = 0 ; 
    for (int i = 0; i<x.borders.length; i++)
    {
        if (x.borders[i] == -1) 
            t = i ; 
    }
    for (int j = 0; j<x.borders.length; j++) 
    {
        if (x.borders[j] == 1) 
            n++ ;
    }

    Territory.translate (t) ;
    System.out.print (" has " + n + " borders: ") ;
    Territory.translate (x.borders) ;
    System.out.println (" ") ; 
}

当我运行它时,我将所有内容都放在一行上而没有换行符。为什么不System.out.println (" ") ;创建换行符?

以下是输出结果的示例:

西北地区,阿尔伯塔,堪察加,hidavid-names-macbook-pro:~ davidname$

编辑:问题是这个方法从未被调用过。我要替换的另一个是。一切都很好。

4

7 回答 7

2

您显示的代码都不是输出“Northwest Territory, Alberta, Kamchatka”的内容。

.translate() 有什么作用?它必须在里面。

于 2010-03-24T17:58:05.537 回答
1

我也没有看到它打印has " + n + " borders:,所以我要说代码由于某种原因永远不会执行

于 2010-03-24T17:54:41.623 回答
1

我只能看到

System.out.print (" has " + n + " borders: ") ;

其实我不明白为什么你会看到任何其他输出

" 有 5 个边框:"

于 2010-03-24T17:54:43.480 回答
1

上面的代码片段将开始一个新行。问题是方法 printBoarders 没有被调用。

于 2010-03-24T18:02:28.350 回答
0

我相信它是从最后一个 System.out.print 调用离开它的行的中间开始的。

来自 PrintWriter 的文档,例如

public void println(String x)

打印一个字符串,然后终止该行。

于 2010-03-24T17:54:25.750 回答
0

只有最后一个打印是println,第一个只是打印所以只有空格“”被打印到最后的新行......

编辑:你的意思是当你多次调用它时?Y

于 2010-03-24T17:54:36.863 回答
0

只需快速扫描此代码,看起来似乎确实到达了 println()。实际上我什至没有看到你是如何得到你所做的输出的。这是完整的代码吗。这是编写小型单元测试的好案例。

于 2010-03-24T17:55:59.047 回答