Java 将字符串数组转换为整数数组
所以基本上用户从扫描器输入中输入一个序列。Java 将字符串数组转换为整数数组,java,string,integer,user-input,data-manipulation,Java,String,Integer,User Input,Data Manipulation,所以基本上用户从扫描器输入中输入一个序列。 12、3、4等 它可以是任意长度,并且必须是整数。 我想将字符串输入转换为整数数组。 所以int[0]将是12,int[1]将是3,等等 有什么建议吗?我正在考虑实现if charat(I)==','获取前面的数字并将它们一起解析,并将其应用于数组中当前可用的插槽。但我不太清楚如何编码。你可以从扫描仪上读取整个输入行,然后按,分割行,然后你有一个字符串[],将每个数字解析成int[],索引一对一匹配…(假设输入有效且没有数字格式概念)像这样 处理无效
12、3、4等
它可以是任意长度,并且必须是整数。
我想将字符串输入转换为整数数组。
所以int[0]
将是12
,int[1]
将是3
,等等
有什么建议吗?我正在考虑实现if charat(I)==','
获取前面的数字并将它们一起解析,并将其应用于数组中当前可用的插槽。但我不太清楚如何编码。你可以从扫描仪上读取整个输入行,然后按,
分割行,然后你有一个字符串[]
,将每个数字解析成int[]
,索引一对一匹配…(假设输入有效且没有数字格式概念)像这样
处理无效输入
你需要考虑在这种情况下你需要做什么,你想知道在那个元素中有不好的输入还是跳过它?
如果您不需要知道无效输入,但只想继续解析数组,则可以执行以下操作:
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);
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;
}
}
在这种情况下,输入错误(不是有效整数),元素将为null
导致
输入:“2,5,6,坏,10”
输出:[2,3,6,空,10]
您可以通过不捕获异常()并使用其他方法检查有效整数来潜在地提高性能
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
class MultiArg {
Scanner sc;
int n;
String as;
List<Integer> numList = new ArrayList<Integer>();
public void fun() {
sc = new Scanner(System.in);
System.out.println("enter value");
while (sc.hasNextInt())
as = sc.nextLine();
}
public void diplay() {
System.out.println("x");
Integer[] num = numList.toArray(new Integer[numList.size()]);
System.out.println("show value " + as);
for (Integer m : num) {
System.out.println("\t" + m);
}
}
}
输出:
12 34 56 78 45 67
逐行
int [] v = Stream.of(line.split(",\\s+"))
.mapToInt(Integer::parseInt)
.toArray();
Stream.of().mapToInt().toArray()
似乎是最好的选择
int[] arr = Stream.of(new String[]{"1", "2", "3"})
.mapToInt(Integer::parseInt).toArray();
System.out.println(Arrays.toString(arr));
Java有一个方法“convertStringArrayToIntArray”
将字符串数组转换为流并映射到int是Java8中可用的最佳选项
String[] stringArray = new String[] { "0", "1", "2" };
int[] intArray = Stream.of(stringArray).mapToInt(Integer::parseInt).toArray();
System.out.println(Arrays.toString(intArray));
对于Java 8及更高版本:
String[] test = {"1", "2", "3", "4", "5"};
int[] ints = Arrays.stream(test).mapToInt(Integer::parseInt).toArray();
扫描仪输入的代码是什么?这是一个重复的问题。这里有一个函数可以帮助您:这是否回答了您的问题?Java Devil,如果继续添加其他项,那么这个“/”和另一个数字索引是什么意思?如果我想将其他人添加到数组中怎么办?@Euridice01这只是一个处理无效输入的建议。考虑输入<代码> 4,6,Z,10 < /代码>。这里的z
将导致NumberFormatException
,因此如果继续使用i
作为索引,整数数组的第三个位置将出现null
。这取决于你想如何处理这种情况。我刚才提到的额外索引是忽略z
,因此在最后的整数数组中,第三个数字是10
。它是哪个包和类?@eugenemaev位于org.alfonz.utility
int[] arr = Stream.of(new String[]{"1", "2", "3"})
.mapToInt(Integer::parseInt).toArray();
System.out.println(Arrays.toString(arr));
String numbers = sc.nextLine();
int[] intArray = convertStringArrayToIntArray(numbers.split(", "));
String[] stringArray = new String[] { "0", "1", "2" };
int[] intArray = Stream.of(stringArray).mapToInt(Integer::parseInt).toArray();
System.out.println(Arrays.toString(intArray));
String[] test = {"1", "2", "3", "4", "5"};
int[] ints = Arrays.stream(test).mapToInt(Integer::parseInt).toArray();