我使用的是扫描仪而不是字符串标记符,下面是代码片段......
Scanner scanner = new Scanner("Home,1;Cell,2;Work,3");
scanner.useDelimiter(";");
while (scanner.hasNext()) {
// System.out.println(scanner.next());
String phoneDtls = scanner.next();
// System.out.println(phoneDtls);
ArrayList<String> phoneTypeList = new ArrayList<String>();
if(phoneDtls.indexOf(',')!=-1) {
String value = phoneDtls.substring(0, phoneDtls.indexOf(','));
phoneTypeList.add(value);
}
Iterator itr=phoneTypeList.iterator();
while(itr.hasNext())
System.out.println(itr.next());
}
我执行此操作后的输出... 家 细胞 工作
从上面的代码可以看出,在数组列表phoneTypeList中我们终于存储了值..但是在','的基础上找出值的逻辑并不是那么好......这是..
if(phoneDtls.indexOf(',')!=-1) {
String value = phoneDtls.substring(0, phoneDtls.indexOf(','));
phoneTypeList.add(value);
}
你可以用其他的替代方案告诉我.. !!实现同样的目标...... !!提前多多感谢.. !!
答案 0 :(得分:2)
好吧,既然你问过是否还有另外一种方法可以做,那么这里有一个替代方案:你可以直接拆分字符串,用foreach
语句用更少的代码完成:
String input = "Home,1;Cell,2;Work,3";
String[] splitInput = input.split(";");
for (String s : splitInput ) {
System.out.println(s.split(",")[0]);
}
无需使用ArrayList<T>
,因为您也可以遍历数组。
答案 1 :(得分:1)
你可以尝试基于','STIRNG_VALUE.split(',')进行拆分;将返回一个字符串分隔的数组,可能会有帮助
答案 2 :(得分:1)
如果我理解正确的话。问题陈述是您要维护Phone-Type-List列表。像这样:[“Home”,“Cell”,“Work”]。
我建议你将它保存在属性文件/配置文件/数据库中,它有意义,并在应用程序启动时将其加载到内存中。
如果无法更改输入,那么对于算法我无法想到更好的输入。看起来不错。
如果有意义,你可以使用字符串的split函数。 首先使用拆分“;” 然后拆分“,”
答案 3 :(得分:1)
declare the arraylist outside the while loop.
试试这个,我也做了一些改进,以获得更好的表现。希望你能比较和理解这种变化。
ArrayList<String> phoneTypeList = new ArrayList<String>();
Scanner scanner = new Scanner("Home,1;Cell,2;Work,3");
scanner.useDelimiter(";");
String phoneDtls = null;
String value = null;
while (scanner.hasNext()) {
phoneDtls = scanner.next();
if (phoneDtls.indexOf(',') != -1) {
value = phoneDtls.split(",")[0];
phoneTypeList.add(value);
}
}
Iterator itr = phoneTypeList.iterator();
while (itr.hasNext())
System.out.println(itr.next());
我已经执行了n得到了结果,查看截图。