我对java很新,我的代码需要一些帮助。
我试图用星号(*)替换所有等于输入的第一个字符(第一个字符除外)的字符。
示例:
- 输入:1231231231
- 输出:123 * 23 * 23 *
这是我的代码:
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while(in.hasNextInt())
{
int inputLine = in.nextInt();
System.out.println(processLine(inputLine));
}
}
public static long processLine(int inputLine) {
String convert = Integer.toString(inputLine);
String firstDigit = convert.substring(0,1);
String filter = convert.replaceAll(firstDigit,"*");
long result = Long.parseLong(filter);
return result;
}
}
但它返回错误说:
线程中的异常" main" java.lang.NumberFormatException:对于输入字符串:" * 23 * 23"
有谁知道如何使这项工作?
答案 0 :(得分:0)
在致电substring
之前,您需要在第一个字符之后获取所有的replaceAll
。例如,
Scanner in = new Scanner(System.in);
while (in.hasNextInt()) {
int inputLine = in.nextInt();
String v = Integer.toString(inputLine), f = v.substring(0, 1);
System.out.println(f + v.substring(1).replaceAll(f, "*"));
}
答案 1 :(得分:0)
您希望使用以下正则表达式匹配替换:
(?<!^)
说明:
1
:如果角色不在该行的开头。 (即行开头的负面回顾)
public static String processLine(int inputLine) {
String convert = Integer.toString(inputLine);
return inputLine.replaceAll("(?<!^)1", "*");
}
:匹配1。
完全致电您的替代人员:
core-pool-size: 20
max-pool-size: 20
throttle-limit: 10