如何迭代数组并尝试将字符串转换为long?这是一个例子:
String[] myArray = ["123", "122 Street", "2334"];
// I'm trying to loop through an array like this and cast to a long
for(String s: myArray) {
try {
long newValue = Long.valueOf(s);
// How would I swap the old values to their new long type in the
// myArray?
} catch(Exception error) { }
}
答案 0 :(得分:3)
您无法将long
放入String[]
。您需要创建一个专门用于保存long的第二个数组。我不确定“122 Street”是否会正确投射或给出错误。
String[] myArray = ["123", "122 Street", "2334"];
long[] longs = new long[myArray.length];
for (int i = 0; i < myArray.length; i++) {
try {
longs[i] = Long.valueOf(myArray[i]);
} catch (Exception e) {
// Handle error case
}
}
答案 1 :(得分:1)
Java数组只存储它们声明要存储的类型(Java不是JavaScript)。
这是一个单行:
long[] numbers = Arrays.stream(myArray)
.filter(s -> s.matches("\\d+"))
.mapToLong(Long::parseLong)
.toArray();
答案 2 :(得分:0)
null
的数组不理想,我们可以使用List
来收集结果和我们完成后 - 将其转换为Long
public static void main(String[] args) {
String[] myArray = {"123", "122 Street", "2334"};
Long[] array = stringsToLongs(myArray);
}
private static Long[] stringsToLongs(String[] myArray) {
List<Long> list = new LinkedList<>();
for(String s: myArray) {
if (s.matches("\\d+"))
list.add(Long.valueOf(s));
}
return list.toArray(new Long[list.size()]);
}
答案 3 :(得分:0)
我如何将旧值换成myArray中的新long类型?
你不会。你的数组已经是Type
string
。它只能接受string
值。如果你想要一个类型为long
的等效数组,你将需要它。这种类型的不同数组;存储在内部的等效值。
其他答案在目前的措辞中在技术上并不正确。一个 可以 将long
值放入string[]
数组中; 不是long
类型/格式 。
同样适用于反向(这似乎是您想要做的):您可以long[]
保存以前为string
类型/格式的数据。你只需要进行适当的转换。
其他答案稍微有点错误,就是在技术上没有 cast ,在词的真正含义中,在数字类型和字符串之间。相反,做的是 解析 。
如果您的问题具体,请使用long.valueOf(string s)
从long
表示中解析string
值。
请注意,此方法需要string
表示某个数字,并且会因NumberFormatException
而失败。
这包括"122 Street"
。那不是一个数字。 "122"
是。因此,在将其转换为"122"
之前,您必须首先从字符串的其余部分解析long
。
解决方案:
String[] myArray = ["123", "122 Street", "2334"];
myArray[1] = myArray[1].substring(0,2); //Removes " Street" from second element.
long[] myLongs = new long[myArray.length];
for(int i=0; i<myArray.length; i++) {
try {
myLongs[i] = Long.valueOf(myArray[i]);
} catch(NumberFormatException nfe) {
System.out.println("Element at index "+i+" could not be parsed.");
} catch(Exception ex) {
System.out.println("Some other exception happened.");
}
}