我突然发现在程序部分启动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数组生成?
答案 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());
}
}
}
}