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();