2010-03-24 99 views
-1

下面是相關代碼:爲什麼這個println命令不會啓動一個新行?

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 (" ") ;爲什麼不是創建換行符?

這裏是什麼樣的輸出捲起就是一個例子:

Northwest Territory, Alberta, Kamchatka, hidavid-names-macbook-pro:~ davidname$

編輯:這個問題可能永遠不會被調用此方法。另一個我正在取代的是。一切都很好。

+4

在我看來,輸出不是來自您在此處顯示的代碼。 「有」和「邊界:」在哪裏? – 2010-03-24 17:55:46

+1

這是風險嗎?涼! – OscarRyz 2010-03-24 18:00:09

回答

1

上面的代碼snippit會開始一個新行。問題是printBoarders方法沒有被調用。

0

我相信它是從最後一個System.out.print調用離開它的中間開始的。

來自PrintWriter的文檔,例如,

public void println(String x) 

打印String,然後終止 行。

+0

你是什麼意思? – David 2010-03-24 17:56:52

0

只有最後打印時調用println,首先是隻打印所以纔有了空間「」印在年底新線...

編輯:當你調用它多次你的意思是?Ÿ

+0

如果它打印在一個新行上,則davvid-names-backboo-pro:〜davidname $將打印在它的下面。 – David 2010-03-24 17:56:10

1

我沒有看到它打印has " + n + " borders:要麼,所以我要去說的代碼是從來沒有出於某種原因執行

1

我只能看到

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

其實我不明白爲什麼你看到任何其他輸出,那麼

「有5個邊界:」

+0

你是什麼意思這就是你所看到的? – David 2010-03-24 17:56:36

+1

@David:這意味着你發佈了錯誤的代碼和平(或者最好說你只發布了部分代碼) – Roman 2010-03-24 17:57:35

0

就迅速掃描這些代碼,它看起來像的println()似乎是到達。其實我甚至都沒有看到你是如何得到你的輸出的。這是完整的代碼。這是編寫小單元測試的好例子。

+0

爲什麼它看起來沒有達到? – David 2010-03-24 17:58:19

2

您所顯示的代碼都不是您輸出的內容「Northwest Territory,Alberta,Kamchatka」。

.translate()是做什麼的?它必須在那裏。

相關問題