12, 3, 4
等 它可以长度长,必须是整数。 我想将字符串输入转换为整数数组。 所以
int[0]
12
int[1]
将是3
等。
任何提示和想法?我正在考虑实施
if charat(i) == ','
获取上一个数字并将它们分析在一起,并将其应用于数组中的当前可用插槽。但是我不太确定如何编码。
您可以从扫描仪中读取整个输入线,然后按
,
将行分开,然后将每个数字分解为inde,用索引一对一匹配...(假设有效输入和无 String[]
int[]
yoyo的答案暗示,以上可以在Java 8:
中更简单地实现。
NumberFormatExceptions
处理无效输入您需要考虑在这种情况下需要做什么,您想知道该元素的输入不好还是只是跳过。
int[] numbers = Arrays.stream(line.split(",")).mapToInt(Integer::parseInt).toArray();
末尾的无效元素将由a表示,需要删除这些元素,以区分有效的输入值。 ressultsin
int index = 0;
for(int i = 0;i < numberStrs.length;i++)
{
try
{
numbers[index] = Integer.parseInt(numberStrs[i]);
index++;
}
catch (NumberFormatException nfe)
{
//Do nothing or you could print error if you want
}
}
// Now there will be a number of 'invalid' elements
// at the end which will need to be trimmed
numbers = Arrays.copyOf(numbers, index);
如果您需要以后了解无效的输入,则可以执行以下操作:
int[]
在这种情况下,不良输入(不是有效的整数)该元素将为null。ressultsin
0
您可能会通过不捕获例外来提高性能(请参阅此问题以获取更多信息),并使用其他方法检查有效的整数。线
0
与替代性as
Input: "2,5,6,bad,10"
Output: [2,3,6,10]
对于解析较大的文本的好处是
Integer[] numbers = new Integer[numberStrs.length];
for(int i = 0;i < numberStrs.length;i++)
{
try
{
numbers[i] = Integer.parseInt(numberStrs[i]);
}
catch (NumberFormatException nfe)
{
numbers[i] = null;
}
}
这不需要字符串数组在内存中,我们进行了增量解析以产生整数。此外,由于对
Input: "2,5,6,bad,10"
Output: [2,3,6,null,10]
的输入是一个
int [] v = Stream.of(line.split(",\\s+"))
.mapToInt(Integer::parseInt)
.toArray();
Arrays.stream()
,我们现在还可以使用缓冲字符源以避免在内存中包含完整的输入源。
还请参见
int [] v = Arrays.stream(line.split(",\\s+"))
.mapToInt(Integer::parseInt)
.toArray();
似乎是最好的选择。
int [] v = Pattern.compile(",\\s+").splitAsStream(line)
.mapToInt(Integer::parseInt)
.toArray();
对于Java 8及更高:
splitAsStream
将字符串数组转换为流并映射到int是Java 8中的最佳选项。
CharSequece
String
但是,要终止WARE循环,您必须将任何充电器放在输入末尾。 ex。输入:输出:
int[] arr = Stream.of(new String[]{"1", "2", "3"})
.mapToInt(Integer::parseInt).toArray();
System.out.println(Arrays.toString(arr));
String[] test = {"1", "2", "3", "4", "5"};
int[] ints = Arrays.stream(test).mapToInt(Integer::parseInt).toArray();
Resault是[12,13];
java有一种方法为“ convertstringarraytointarray”。
String[] stringArray = new String[] { "0", "1", "2" };
int[] intArray = Stream.of(stringArray).mapToInt(Integer::parseInt).toArray();
System.out.println(Arrays.toString(intArray));