![](/img/trans.png)
[英]How can I store values in a hashmap with <String, List<Integer>>
[英]How can i split a string into integers, symbols and strings, and then store the integer values to use for arithmetic operation
我是新来的和java,请我尝试将一个字符串拆分为整数,符号和字符串。 我想存储整数并将它们用于算术运算。 每次我尝试将split(数字)字符串转换为整数时,我都会收到错误(NumberFormatException)。
package com.company;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
static ArrayList<Integer> numbers;
static String numInt;
static StringBuffer buffer;
static void splitString(String str){
StringBuffer alpha = new StringBuffer(), num = new StringBuffer(), special = new StringBuffer();
String numS = ""; String nume = "";
for(int i=0; i<str.length(); i++) {
if(Character.isDigit(str.charAt(i))) {
nume = numS + str.charAt(i);
} else if(Character.isAlphabetic(str.charAt(i))) {
alpha.append(str.charAt(i));
} else {
special.append(str.charAt(i));
}
}
System.out.println(alpha);
System.out.println(special);
int numInt = Integer.parseInt(nume.trim());
int numIntr = numInt + 47;
System.out.println(numIntr);
}
public static void main(String[] args) {
String str = "thissois8uy293849i0000r";
splitString(str);`enter code here`
}
}
您似乎遇到了问题,首先您的号码不会增加。 nume = numS + str.charAt(i);
需要是nume = nume + str.charAt(i);
所以它为字符串添加了数字。
第二个问题是你的榜样,你结束了一个价值82938490000
大于Integer.MAX_VALUE
(2,147,483,647)不能被存储在int
。 如果你改变它很long
它会工作正常。
long numInt = Long.parseLong(nume.trim());
long numIntr = numInt + 47;
您可能需要考虑使用BigInteger
来处理更大的值。
BigInteger numInt = new BigInteger(nume.trim());
BigInteger numIntr = numInt.add(BigInteger.valueOf(47));
这个问题有关于整数最大值的更多信息
有一些问题需要解决:
以下行无法按预期工作:
if(Character.isDigit(str.charAt(i))) { nume = numS + str.charAt(i); }
因为你在每次迭代中都会覆盖nume
的值。
由于用户@DCTID已经回答你使用int
来保存大的数值。 所以请使用long
(或者更好的BigInteger
)。
以下是您在编写Java splitString
修改的splitString
方法代码:
static void splitString(String str) {
StringBuffer alpha = new StringBuffer();
StringBuffer num = new StringBuffer();
StringBuffer special = new StringBuffer();
for (int i = 0; i < str.length(); i++) {
if (Character.isDigit(str.charAt(i))) {
num.append(str.charAt(i));
} else if (Character.isAlphabetic(str.charAt(i))) {
alpha.append(str.charAt(i));
} else {
special.append(str.charAt(i));
}
}
long numInt = Long.parseLong(num.toString().trim()) + 47L;
System.out.println("Number: " + numIntr);
System.out.println("Characters: " + alpha);
System.out.println("Special chars: " + special);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.