Манипулирование строками в Java - PullRequest
0 голосов
/ 04 мая 2011

Я хочу вернуть строку следующим образом:

    Josephine Blow (Associate Professor, Math)
         Teaching Assignments: **(for each course write on a seperate line)**
          Course No.: xxx \t Section No.: xxxx \t Course Name: xxxx \t Day and Time: dayOfWeek - timeOfweek
          If no teaching assignments print: none

Используя переменную ArrayList с именем "Teaches", из которой я получаю всю свою информацию.

Я просто не могу понять, как мне вернуть этот тип String, который может быть очень длинным. Должен ли я использовать какой-нибудь строковый буфер? Как я могу добавить отдельную строку между каждыми двумя разделами.

Вот мой код, чтобы было понятно:

public String toString() {
            String s ="";
            int i=1;
            if (this.teaches.isEmpty()){
                return "none";
            }

            for(Section current: this.teaches){
            s=s+"Course No"+i+" Section No:"+current.getSectionNo()+" Course Name:"+current.getRepresentedCourse().getCourseName()+" Day and Time"+current.getTimeOfDay();
            }

            return new String (this.getName()+" (Associatr Professor, "+this.department+" )"+s);

}

Ответы [ 4 ]

3 голосов
/ 04 мая 2011

Да, пожалуйста, используйте StringBuilder:

public String toString() 
{
    StringBuilder builder = new StringBuilder();
    if (!this.teaches.isEmpty())
    {
        for(Section current: this.teaches)
        {
            builder.append("["
                   .append("Course No ")
                   .append(i)
                   .append(" Section No: ")
                   .append(current.getSectionNo())
                   .append(" Course Name: ")
                   .append(current.getRepresentedCourse().getCourseName())
                   .append(" Day and Time ")
                   .append(current.getTimeOfDay())
                   .append("]");
        }
    }

    return builder.toString();
}

Или, что еще лучше, используйте класс Course вместо набора необработанных строк и просто распечатайте List<Course>, вызывая его метод toString() для каждой записи в списке.

2 голосов
/ 04 мая 2011

В качестве альтернативы StringBuffer вы можете использовать StringBuilder, рекомендуется, когда вам не нужен синхронизированный доступ.

Что касается новой строки, я бы порекомендовал Системе узнать, какой соответствующий символ (ы) конца строки, например:

System.getProperty ( "line.separator");

2 голосов
/ 04 мая 2011

Вы не строго должны использовать StringBuffer или StringBuilder.Когда Java объединяет два String s, она внутренне использует нечто, очень похожее на StringBuffer.Использование StringBuffer напрямую немного лучше, хотя я думаю, что вы этого не заметите.

Начиная с новой строки, используйте символ \n.Вы можете передать много символов \n, которые вам нравятся, и в строке будут вставлены пустые строки.

Например:

s+="Course No"+i+" Section No:"+current.getSectionNo()+" CourseName:"+current.getRepresentedCourse().getCourseName()+" Day and Time"+current.getTimeOfDay()+"\n\n";

оставит пустую строку между каждым курсом.

Есть некоторые специальные символы, которые вы можете добавить, используя некоторые коды, начинающиеся с \.См .: http://www.java -tips.org / java-se-tips / java.lang / символ-escape-коды-in-java.html

1 голос
/ 04 мая 2011

Да, вы можете создать свой ответ с помощью StringBuffer или StringBuilder (StringBuffer является поточно-ориентированным, но, как правило, будет несколько менее производительным, поэтому, если вы не заботитесь о многопоточности, используйте StringBuilder)

например:

StringBuilder builder = new StringBuilder();
for(Section current: this.teaches){
            builder.append("Course No").append(i).append(" Section No:").append(current.getSectionNo()).append(" Course Name:").append(current.getRepresentedCourse().getCourseName()).append(" Day and Time").append(current.getTimeOfDay());
            }

Вы можете включать переводы строк, используя "\ n", хотя вам нужно быть осторожными, используя переводы строк, поскольку они могут зависеть от системы, поэтому лучше использовать

System.getProperty("line.separator")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...