我想在Node应用程序中从Java中的字符串后面提取一个长度为3的子字符串。所以,如果字符串中有12345678,我想得到678在第一个提取,345在第二个,和12个在最后。这只是一个例子,它应该可以处理任意数量的数字(我将使用parseInt()进行转换)。THanks提前!这就是我现在所拥有的。
front=new IntNode(Integer.parseInt(digits.substring(digits.length()-3,digits.length())),null);
back=front;
for(int i=digits.length()-3;i>2;i-=2){
int sub=Integer.parseInt(digits.substring(i-3,i));
front.addNodeAfter(sub);
manyNodes++;
}但是对于12345678998765,它给了我998,789,567,345,123,765
发布于 2020-10-23 05:09:40
实际上,我认为模数算符提供了一个更好的方法:
int value = 12345678;
while (value > 0) {
int last3 = value % 1000;
System.out.println(last3); // or console.log(last3) if using Node
value = value / 1000;
}这些指纹:
678
345
12这里的逻辑是使用模数为1000的%来找到最后3位数字。然后,我们将最后3位数除以1000,然后再进行迭代,直到没有剩下的数字为止。
附带注意:我实际上不知道您是否在这里使用Java of Node,但是上述逻辑在这两种情况下都应该有效。
编辑:
如果您由于某种原因不能使用上述方法,下面是您可以在String#split中使用的技巧:
String number = "12345679801234567890";
String[] numbers = number.replaceAll("(\\d{3})", "$1.").split("\\.");
System.out.println(Arrays.toString(numbers));这些指纹:
[123, 456, 798, 012, 345, 678, 90]发布于 2020-10-23 05:17:21
看看你的i初始化,int i=digits.length()-3你的i从长度开始,
如果你有12345678998765,你从7号开始,
int sub=Integer.parseInt(digits.substring(i-3,i));
然后在这里你取子字符串I-3到i,所以你在7后面有3个位置,这意味着998。
在另一个答案中,你应该使用模数法,只是想解释为什么你的代码没有给出你所期望的。
https://stackoverflow.com/questions/64494151
复制相似问题