2016-04-22 2 views
1

Это извиняет меня. По какой-то причине System.out.println вставляет дополнительную строку новой строки, и я не понимаю, почему. Код в вопросе:Java println inserting extra new line

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 

Видео представляет собой простой класс, который содержит две приватных переменный экземпляр String Имя и тип типа видеозаписи. VideoType - это перечисление.

Любые идеи, почему первые два пропускают пространство, где нет последнего? Я использую Eclipse. Может быть, есть ситуация, которую я случайно ударил.

Спасибо!

*** ОБНОВЛЕНИЕ Добавление классов видео и видео.

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

Да, это было невероятно нелепая ошибка.

Вы, ребята, помогли мне добраться до решения. То, что произошло, я читал в в видео имен из текстового файла, который выглядел так:

movie1, 
movie2, 
... 

Я установил разделитель, как «» так что читал „movie1“, а затем „\ г \ 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 как печать ln печатает новую строку.

изменить: теперь, когда вы разместили свой код, мы можем видеть, что это класс «VideoType». Вы пытались вернуть значения перечисления без параметра?

Я бы создал метод toString и отобразил то, что вы хотите, что избавится от этой дополнительной проблемы.

Таким образом, когда вы закончите с video.getType();, вы будете уверены, что он действует так, как вы этого хотите.

0

Попробуйте использовать System.out.print, чтобы избежать дополнительной линии.

+0

Я понимаю разницу между print и println. Я пытаюсь понять, почему println не ведет себя так, как я ожидаю. – btbam91

+0

вы можете обновить код класса видео. может быть, toString переопределяется и добавляет новую строку. –

-1

Попробуйте System.out.print("someString") вместо System.out.println("someString")