一行而非另一行的越界数组异常



代码

 ArrayList<String> tokens = new ArrayList<String>();
    ArrayList<String> PRINT = new ArrayList<String>();
    String tok = "";
    for(String element : list) {
        StringTokenizer st = new StringTokenizer(element);
        if(!element.startsWith("PRINT")) {
            while(st.hasMoreTokens()) {
                tok = st.nextToken();
                tokens.add(tok);
                for(String key : expression.keySet())
                    if(tok.equals(key))
                        System.out.println(tokens.get(0) + " changed from " + expression.get(key) + " to " + Integer.parseInt(tokens.get(2)));
            }
            expression.put(tokens.get(0),Integer.parseInt(tokens.get(2)));
            tokens.clear();
        }

我在下线处得到一个数组越界异常

System.out.println(tokens.get(0) + " changed from " + expression.get(key) + " to " + Integer.parseInt(tokens.get(2))

我知道tokens.get(0)="A",tokens.get-(1)="="和tokens.get2="7"

代替代码

for(String element : list) {
        StringTokenizer st = new StringTokenizer(element);
        if(!element.startsWith("PRINT")) {
            while(st.hasMoreTokens()) {
                tok = st.nextToken();
                tokens.add(tok);

使用以下代码

for(String element : list) {
     for(int i=0;i<element.length();i++){         
           tokens.add(element.charAt(i)+"");
     }

问题是,第一次向tokens添加令牌时,只有一个项,但是for循环需要3(在索引0、1和2处)。

最新更新