基本字符串操作

时间:2016-04-27 13:00:06

标签: java string

我正在尝试复制字符串的一些基本操作,而代码工作它只是不使用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 个答案:

答案 0 :(得分: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();
    }

答案 1 :(得分:0)

  

我只是想了解为什么StringBuilder不起作用

据我所知,StringBuilderconcatenation方法都没有错。

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

我认为问题在于您只是将concatenation方法调用的结果分配给变量而不是将其打印出来。在这3行中的最后一行之后添加:

System.out.println(concat);
  

在这两种情况下,System.out.println()都可以正常工作并输出正确的输出,但它一行一行,我需要一个字符串

那是因为您使用的是printlnprintln方法超出其参数,后跟行终止。如果您不想终止线路,请改用print

但是,concatenation方法不应该打印任何内容,如果它应该是String.concat的类似物。您应该在concatenation方法返回之后打印连接字符串