2016-04-22 55 views
1

這是竊聽我的。無論什麼原因,System.out.println插入一個額外的換行符,我不明白爲什麼。有問題的代碼是:Java的println插入額外的新行

System.out.println("Videos: "); 
for (Video video: videosToBeRented) { 
    System.out.println(video.getName() + " - " + video.getType()); 
} 
System.out.println("price: " + price + "\n"); 

這裏是一個示例輸出:

Videos: 
The Walking Dead Cats - ROMANCE 

Star Scrimmage - HORROR 

Cat in the Boot - NEW_RELEASE 
price: 91.0 

視頻是一個簡單的類,它包含兩個私有實例變量字符串名稱和類型的VideoType。 VideoType是一個枚舉。

任何想法爲什麼前兩個跳過最後一個沒有的空間?我正在使用Eclipse。也許有一個我不小心碰到的設置。

謝謝!

*** UPDATE 添加Video和VideoType類。

public class Video { 

//Private Instance Variables 
private String name; 
private VideoType type; 

public Video(String name, VideoType type) { 
    this.name = name; 
    this.type = type; 
} 

public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 

public VideoType getType() { 
    return type; 
} 

public void setType(VideoType type) { 
    this.type = type; 
} 

}

public enum VideoType { 
NEW_RELEASE(6.00), DRAMA(5.00), COMEDY(2.00), ROMANCE(4.00), HORROR(3.00); 

private double price; 

VideoType(double price) { 

    this.price = price; 
} 

public double getPrice() { 

    return this.price; 
} 

}

+0

'println()'默認創建一個新行。如果你想打印一行並添加你自己的換行符'\ n',只需使用'print()' – scoots

回答

1

唉,這是一個令人難以置信的愚蠢的錯誤。

你們幫我找到了解決辦法。發生了什麼事我是從那個看起來像這樣一個txt文件讀取視頻名稱:

movie1, 
movie2, 
... 

我設置分隔符爲「」所以這是看完‘MOVIE1’,然後‘\ r \ nmovie2’

我需要更改文本文件,使其看起來像:movie1,movie2,或者將我的代碼更改爲按行讀入,而不是隻讀取下一個值。

+0

你可以逐行閱讀,所以我會去那條路線,如果這對你來說似乎更好。 – XaolingBao

8

可能的原因是video.getType().toString()值與新行字符('\n')結束。試試System.out.print,看看你是否還有新的字符。另一種選擇是使用調試器來檢查字符。

+0

我設置了String aString = video.getName()+「 - 」+ video.getType();在調試器中,我檢查了aString爲:[,T,h,e,,W,a,l,k,i,n,g,D,e,a,d,C,a,t,s, - ,,H,O,R,R,O,R] – btbam91

+0

@ btbam91當Java看到你的'video.getType()'時,它將使用'toString()'的任何值getType )'回報。 @Adi說你可能想檢查'getType()'返回的實際值。這可能包含一個新的行字符。 –

1
\n 

這插入一條新的線。那麼一切都會有自己的路線而不會跳過額外的路線。這裏的問題似乎是來自你撥打getType();

您也可以保留\ n並且做System.out.print而不是System.out.println,因爲print會打印一個新行。

編輯:現在您發佈了您的代碼,我們可以看到它是「VideoType」類。你有沒有嘗試返回沒有參數的枚舉值?

我會創建一個toString方法,並顯示你想要的東西,這將擺脫多餘的線問題。

通過這種方式,當您以video.getType();結束時,您將確定它按照您希望的方式行事。

0

嘗試使用System.out.print來避免多餘的行。

+0

我瞭解print和println之間的區別。我試圖理解爲什麼println不像我期望的那樣行事。 – btbam91

+0

可以請你更新視頻課程代碼。可能是toString是覆蓋和它的添加換行 –

-1

嘗試System.out.print("someString"),而不是System.out.println("someString")