0

我使用了扫描仪而不是字符串标记器,下面是一段代码......

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

你能告诉我其他的选择吗..!! 实现同样的目标...!!提前非常感谢..!!

4

4 回答 4

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>因为您也可以遍历数组。

于 2012-04-08T06:41:53.167 回答
1

您可以尝试根据','进行拆分吗 STIRNG_VALUE.split(','); 将返回一个数组,其中的字符串用 分隔,这可能会有所帮助

于 2012-04-08T06:37:53.023 回答
1

如果我理解正确。问题陈述是您要维护电话类型列表的列表。像这样:[“家”,“细胞”,“工作”]。

我建议您将其保存在有意义的属性文件/配置文件/数据库中,并在您的应用程序启动时将其加载到内存中。

如果无法更改输入,那么至于算法,我想不出更好的算法。看起来不错。

如果有意义,您可以使用字符串的拆分功能。首先在“;”上使用拆分 然后拆分“,”

于 2012-04-08T06:38:10.060 回答
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 得到结果,检查屏幕截图。

在此处输入图像描述

于 2012-04-08T06:40:34.650 回答