将StringTokenizer类nextToken()方法的标记化输出存储在数组中时,输出为空

时间:2018-07-25 12:44:01

标签: java stringtokenizer

我正在尝试存储通过使用StringTokenizer类的nextToken()方法获得的令牌。当我打印令牌时,它们打印得很好。但是,当我尝试将它们存储在数组中时,它们返回null。我不明白这里发生了什么。您能看看这里发生什么吗?

    import java.util.*;

    class TestSt{
        public static void main(String[] args){
            String s = "My name is Sugandha";
            int len = 0, i=1;
            String[] ar  = new String[50];
            StringTokenizer s1 = new StringTokenizer(s," ");

            while(s1.hasMoreTokens()){
                ar[i] = s1.nextToken();
                i++;
                System.out.println(ar[i]);
            }
        }
    }

2 个答案:

答案 0 :(得分:0)

使用下面的代码...

public static void main(String[] args) {
    String s = "My name is Sugandha";
    int len = 0, i = 1;
    String[] ar = new String[50];
    StringTokenizer s1 = new StringTokenizer(s, " ");

    while (s1.hasMoreTokens()) {
        ar[i] = s1.nextToken();
        System.out.println(ar[i]);
        i++; // this line is moved, print and increment
    }
}

答案 1 :(得分:0)

您尝试在使i递增后打印该值,这意味着您正在打印尚未分配的下一个值,因此它将打印为空。

还注意到您正在将数组中的值从1索引而不是0保存,也许您也可以修复它。

这是一个有效的代码:

import java.util.StringTokenizer;

public class Temp {
    public static void main(String[] args) {
        String s = "My name is Sugandha";
        int i = 0;

        StringTokenizer s1 = new StringTokenizer(s, " ");

        String[] ar = new String[s1.countTokens()];

        while (s1.hasMoreTokens()) {
            ar[i++] = s1.nextToken();
        }

        for(int j= 0 ;j<ar.length;j++){
            System.out.println(ar[j]);
        }
    }
}