如何在java中的字符串单词的两边添加一个字符?

时间:2017-01-08 01:11:21

标签: java

我正在编写一个小程序,用户将输入一个单词,并且该单词应该在每个字母和<之间用连字符返回。在左边签名并且>在那个词的右边。

例如:你好应该返回< -H-e-l-l-o->

所以我试着编写以下代码:

import java.util。*;

公共课Word {

public static void main( String[] args) {

     Scanner input = new Scanner(System.in);
     System.out.println("Write a word:");

     String s1;
     s1 = input.nextLine();

     System.out.print("<-");

     for (int i = 0; i < s1.length(); i++) {

         System.out.print(s1.charAt(i) + "-");

         System.out.print(">");

    }

}

}

但输出添加了&gt;在每个字母后面签名。

4 个答案:

答案 0 :(得分:2)

使用StringBuilder添加字符。

首先使用包含“&lt; - ”的StringBuilder开始。

然后你遍历字符串并为每个字符迭代:

  1. 将字符添加到StringBuilder
  2. 将“ - ”添加到StringBuilder
  3. 在循环结束时,您可以添加“&gt;”

    然后从String返回StringBuilder

答案 1 :(得分:1)

comment by QBrute中所述:

  

那么你不应该在循环中输出>吗?

如果你只是在循环之后移动它,你的代码就可以了。

要回答标题中的问题(“如何...”),这里有5种不同的方式,第一种方式(usingPrint)是代码的更正版本。当然有更多的方法。

public static void main(String[] args) {
    usingPrint("Hello");
    System.out.println(usingReplaceAll("Hello"));
    System.out.println(usingStringJoiner("Hello"));
    System.out.println(usingStringBuilder("Hello"));
    System.out.println(usingCharArray("Hello"));
}
private static void usingPrint(String input) {
    System.out.print("<-");
    for (int i = 0; i < input.length(); i++)
        System.out.print(input.charAt(i) + "-");
    System.out.println(">");
}
private static String usingReplaceAll(String input) {
    return "<" + input.replaceAll("", "-") + ">";
}
private static String usingStringJoiner(String input) { // Java 8+
    StringJoiner buf = new StringJoiner("-", "<-", "->");
    for (int i = 0; i < input.length(); i++)
        buf.add(input.substring(i, i + 1));
    return buf.toString();
}
private static String usingStringBuilder(String input) {
    StringBuilder buf = new StringBuilder("<");
    for (int i = 0; i < input.length(); i++)
        buf.append('-').append(input.charAt(i));
    return buf.append("->").toString();
}
private static String usingCharArray(String input) {
    char[] buf = new char[input.length() * 2 + 3];
    int j = 0;
    buf[j++] = '<';
    for (int i = 0; i < input.length(); i++) {
        buf[j++] = '-';
        buf[j++] = input.charAt(i);
    }
    buf[j++] = '-';
    buf[j++] = '>';
    return new String(buf);
}

输出

<-H-e-l-l-o->
<-H-e-l-l-o->
<-H-e-l-l-o->
<-H-e-l-l-o->
<-H-e-l-l-o->

答案 2 :(得分:1)

希望它有效!

 import java.util.*;

    public class Word {

    public static void main( String[] args) {

         Scanner input = new Scanner(System.in);
         System.out.println("Write a word:");

         String s1;
         s1 = input.nextLine();

         System.out.print("<-");

         for (int i = 0; i < s1.length(); i++) {

             System.out.print(s1.charAt(i) + "-");
      }
             System.out.print(">");

    }
    }

答案 3 :(得分:0)

为什么必须将声明用于打印右端符号“&gt;”进入 for 循环?

在我看来,要获得您需要的正确输出,我认为要打印标记“&gt;”的声明放在 for 语句之后,但不写入 for 语句。

这是解决问题的简单方法。