如何启动String数组?

时间:2015-11-24 22:47:53

标签: java

我突然发现在程序部分启动String数组。我们的想法是从Scanner读取String输入并创建一个String数组。我把它写成如下,

    Scanner sc = new Scanner(System.in);

    String parts [] ; 

    while(sc.hasNext() ){

        String str = sc.nextLine(); 

        // the str value suppose to be *1, 2, 3, 4, 5, 99, 1, 2, 3, 4, 5*
        parts = new String[] { str.split(", ")}; // need correction 

    } 

我实际上需要一个Integer数组,但是,我最好在下一次迭代中使用

Ingeter.valueOf(str_value)

如何在while循环中正确编写String数组生成?

3 个答案:

答案 0 :(得分:4)

split已经返回String[]数组,因此只需将其分配给您的String parts []引用:

parts = str.split(", ");

答案 1 :(得分:2)

在评论中看到一些混淆,使用List而不是数组可能更合适。这是一个有效的例子:

List parts = new ArrayList();

while (sc.hasNext()) 
{
    String str = sc.readLine();

    for (String i : str.split(", ")) 
    {
        parts.add(Integer.valueOf(Integer.parseInt(i)));
    }
}

答案 2 :(得分:0)

我提供了下面的整个解决方案,您可以获得一个不在一对中的单个元素。

public static void main(String[] args) {

    Scanner sc = new Scanner(System.in); 
    boolean bol = false; 

    Map<Integer, Integer> map = new HashMap<Integer, Integer>();

    while(sc.hasNext() ){

        String str = sc.nextLine(); 

        for (String s: str.split(", ") ){

            int t = Integer.valueOf(s); 
            map.put(t, map.containsKey(t) ? map.get(t) + 1 : 1);
        }      
    } 


    if (bol){

        for (Map.Entry<Integer, Integer> entry : map.entrySet() ){


        if ( entry.getValue() == 1){
            System.out.println(entry.getKey());
        }
    }
    }

    else {

        Iterator it = map.entrySet().iterator();

        while ( it.hasNext() ){

            Map.Entry pair = (Map.Entry) it.next();

            if ( pair.getValue() == 1 ){

                System.out.println(pair.getKey());
            }
        }

    }

}