我正在研究弦和一个问题。问题陈述是“将字符串中的所有数字加一”。我没有得到输入数字129和9923所需的输出。有人能帮忙吗!
import java.util.*;
public class Increment {
public static void main(String[] args) {
String number = "129";
int len = number.length();
int i = 0;
int temp = 0;
int before = 0;
int carry = 0;
String result = number;
for (i = len - 1; i >= 0; i--) {
temp = Integer.parseInt(number.charAt(i) + "");
if (temp >= 0 && temp < 9) {
carry = 0;
temp = temp + 1;
result = result.replace(number.charAt(i), (char)(temp + '0'));
} else {
carry = 1;
if (i != 0) {
before = Integer.parseInt(number.charAt(i - 1) + "");
before = before + 1;
result = result.replace(number.charAt(i), '0');
result = result.replace(number.charAt(i - 1), (char)(before + carry));
i = i - 1;
} else {
result = result.replace(number.charAt(i), '0');
result = "1" + result;
}
}
}
System.out.println(result);
}
}
问题是这行代码,请在此处查看更多信息
result = result.replace(number.charAt(i - 1), (char) (before + carry));
您可以像下面这样更改它,但这将替换第一个参数的所有出现,正如@user16320675所指出的
result = result.replace(number.charAt(i - 1), Character.forDigit(before + carry, 10));
因此,我建议使用StringBuilder而不是String来利用setCharAt(int idx, char c)方法
我会使用正则表达式,它使它成为一个更简单的解决方案:
public static void main(String[] args) {
String text = "text240 moretext 350 evenmore460text";
Pattern pattern = Pattern.compile("\\d+");
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
String value = matcher.group();
int val = Integer.parseInt(value) + 1;
text = text.replace(value, Integer.toString(val));
}
System.out.println(text);
}
您定义了一个添加两个字符串的方法并调用该方法
public static String addStrings(String num1, String num2) {
StringBuilder sb = new StringBuilder();
int i = num1.length() - 1, j = num2.length() - 1;
int carry = 0, sum = 0;
while (i >= 0 || j >= 0) {
sum = carry;
if (i >= 0) sum += num1.charAt(i) - '0';
if (j >= 0) sum += num2.charAt(j) - '0';
sb.append(sum % 10);
carry = sum / 10;
i--;
j--;
}
if (carry != 0) sb.append(carry);
return sb.reverse().toString();
}
,main
public static void main(String[] args) {
String num1 = "129";
String num2 = "9923";
String res1 = addStrings(num1, "1".repeat(num1.length()));
String res2 = addStrings(num2, "1".repeat(num2.length()));
System.out.println(res1);
System.out.println(res2);
}
输出
240
11034
问题内容: 我有一个字符串,我想用一个星号替换任何不是标准字符或数字的字符,例如(az或0-9)。例如,“ h ^&ell`。,| ow] {+ orld”被替换为“ h * ell * o * w * orld”。请注意,多个字符(例如“ ^&”)将替换为一个星号。我将如何去做呢? 问题答案: 正则表达式可以解救! 例:
这应该只得到数字和返回,但不做它作为预期的!有什么建议吗?
问题内容: 考虑一个非DOM场景,您想使用JavaScript / ECMAScript从字符串中删除所有非数字字符。范围内的任何字符都应保留。 您将如何用纯JavaScript实现此目标?请记住,这是一个非DOM方案,因此jQuery和其他涉及浏览器和按键事件的解决方案都不适合。 问题答案: 使用正则表达式为的字符串方法,这是与所有非数字匹配的速记字符类:
问题内容: 尝试删除所有非0-9的字母和字符和一个句点。我正在使用,但它也会删除小数,如何也保留小数? 问题答案: 试试这个代码: 现在将包含。
本文向大家介绍从Java字符串中获取所有数字,包括了从Java字符串中获取所有数字的使用技巧和注意事项,需要的朋友参考一下 假设以下是我们的字符串。 为了仅显示上述字符串中的数字,我们使用了该方法并将所有字符替换为空。 以下是最后的示例,该示例仅显示字符串中的数字。 示例 输出结果
我试图找出我的字符串是否包含从a到z的所有字母 我们可以通过其他方法解决这个问题,但我正在尝试仅使用模式和匹配器来解决它。