我正在尝试在字符右边的字符串中切换$
。我不允许使用char[]
,所以我决定使用StringBuffer
。但是,当我尝试使用类似H$E
的代码运行代码时,会输出HE$H$E
,我不知道多余的字符是从哪里来的,我正在寻求一种解释。
package schrumpf.clayton.csc110.drills1;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class MoneyToTheRight {
static BufferedReader in;
public static void main(String[] args) throws IOException{
in = new BufferedReader(new InputStreamReader(System.in));
String input = in.readLine();
int dollarIndex = input.indexOf("$");
StringBuffer buffer = new StringBuffer(input);
char afterDollarChar = buffer.append(input).charAt((dollarIndex + 1));
buffer.setCharAt(dollarIndex, afterDollarChar);
buffer.setCharAt((dollarIndex + 1),'$');
String result = buffer.toString();
System.out.println(result);
}
}
答案 0 :(得分:2)
您要添加两次输入。
StringBuffer buffer = new StringBuffer(input);
buffer.append(input)
我建议添加一次。我还建议使用StringBuilder,它在十多年前就取代了StringBuffer。
Scanner in = new Scanner(System.in);
StringBuilder buffer = new StringBuilder(in.nextLine());
int dollarIndex = buffer.indexOf("$");
buffer.setCharAt(dollarIndex, buffer.charAt(dollarIndex + 1));
buffer.setCharAt(dollarIndex + 1, '$');
System.out.println(buffer);
或单线
System.out.println(in.nextLine().replaceFirst("\\$(.)", "$1\\$"));