我正在编写一个小程序,用户将输入一个单词,并且该单词应该在每个字母和<之间用连字符返回。在左边签名并且>在那个词的右边。
例如:你好应该返回< -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;在每个字母后面签名。
答案 0 :(得分:2)
使用StringBuilder
添加字符。
首先使用包含“&lt; - ”的StringBuilder
开始。
然后你遍历字符串并为每个字符迭代:
StringBuilder
StringBuilder
在循环结束时,您可以添加“&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 语句。
这是解决问题的简单方法。