2016-04-27 2 views
0

Я пытаюсь повторить некоторые основные операции строк и код работает он просто не печатает вывод с помощью функции StringBuilderОсновные операции Строковые

public static String concatenation(String a, String b) { 

    StringBuilder str = new StringBuilder(); 

    for (int i = 0; i < a.length(); i++) { 
     //System.out.println(a.charAt(i)); 
     str.append(a.charAt(i)); 
    } 

    for (int j = 0; j < b.length(); j++) { 
     //System.out.println(b.charAt(j)); 
     str.append(b.charAt(j)); 
    } 

    String concat = str.toString(); 
    return concat; 
} 

public static String subString(String a, int i, int j) { 

    StringBuilder str = new StringBuilder(); 

    for (int k = i; k <= j; k++) { 
     //System.out.println(a.charAt(k)); 
     str.append(a.charAt(k)); 
    } 

    String sub = str.toString(); 

    return sub; 
} 

В обоих случаях System.out.println() работ и печатает правильный вывод но он работает по строкам, и мне нужно это в одной строке, поэтому я использую StringBuilder, но он почему-то не работает.

В основной метод я есть:

a = scan.nextLine(); 
    b = scan.nextLine(); 
    String concat = concatenation(a, b); 
+2

Вы печатаете возвращаемые значения? Пожалуйста, напишите свой основной метод или какой бы метод эти функции не вернулись. – Zircon

+0

Используйте 'print()' вместо 'println()'? –

+2

Почему бы не вернуть новый StringBuilder (a) .append (b) .toString(); '? –

ответ

0

Я просто хочу понять, почему StringBuilder не работает

Насколько я могу видеть, нет ничего неправильно с StringBuilder или вашим методом concatenation.

a = scan.nextLine(); 
b = scan.nextLine(); 
String concat = concatenation(a, b); 

Я думаю, что проблема заключается в том, что вы просто присваивается результат вызова метода concatenation к переменной и не распечатала его. Добавьте это после того, как последний из этих 3-х линий:

System.out.println(concat); 

В обоих случаях System.out.println() работает и печатает правильный вывод, но он делает построчно и мне это нужно в одна строка

Это потому, что вы используете println. Метод println выдает свой аргумент, за которым следует завершение строки. Если вы не хотите окончания строки, используйте вместо этого print.

ОДНАКО, метод concatenation не должен печатать ничего, если он должен быть аналогом String.concat. Вы должны печатать конкатенированную строку после, она была возвращена методом concatenation.

0

изменить свой concatenation(String a, String b), как, как это. Я думаю, что гораздо лучший подход к достижению.

public static String concatenation(String a, String b) { 

    StringBuilder str1 = new StringBuilder(a); 
    StringBuilder str2 new StringBuilder(b);  
    str1.append(str2); 
     return str1.toString(); 
} 

и вы можете использовать это для subString(String a, int i, int j)

public static String subString(String a, int indexFirst, int indexLast) { 

    StringBuilder str = new StringBuilder(); 
    char[] arr = a.toCharArray(); 
     if(arr.length < indexFirst || arr.length > indexLast) 
      throw new Exception ("Invalid Index Out of Bound Found Exception"); 
    for (int k = i; k <= j; k++) 
     str.append(arr[k]); // this looks better than manipulating any String because of Immutability Property. 

    return str.toString(); 
    } 
+0

Прошу прощения, я забыл упомянуть об этом в описании. Задача состоит в том, чтобы показать, как методы конкатенации или подстроки выполняются языками без использования предопределенных функций, таких как простые «+» или «.». Вот почему я пошел на излишне сложный метод циклов for –

Смежные вопросы