You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ArrayList调用length()方法报错及程序实现疑问求助

问题分析与解决方案

我来帮你一步步解决代码里的问题,同时解答你对题目(b)的疑问:

一、修复cannot find symbol错误

你遇到的java: cannot find symbol错误,根源是ArrayList没有length()方法——这个方法是给数组用的,而ArrayList要获取元素个数得用size()方法。

你代码里的这一行:

int num = name.length()*3;

要改成:

int num = name.size()*3;

不过如果你的预期是让value存储索引值(比如[0,1,2,3,4,5]),那这行逻辑还要调整,我后面会详细说明。

二、Question (b) 实现建议

从你的描述来看,你希望value存储和name元素对应的索引值(也就是每个元素在name里的位置编号)。实现起来很简单:直接把循环的计数器i添加到value里就行。

另外,你的代码没有指定ArrayList的泛型类型,这会导致不必要的强制类型转换,还容易出类型错误。建议给ArrayList指定明确的泛型:

  • name存储字符串,用ArrayList<String>
  • value存储整数(索引或计算值),用ArrayList<Integer>

三、修正后的完整代码

我把所有问题都修正了,包括重复import、泛型指定、错误方法替换,同时提供了两种value的实现逻辑(对应你的索引预期和原代码的计算逻辑):

import java.util.*;

public class Retrieve {
    public static void main (String[] args) {
        // 指定泛型,避免类型转换问题,代码更安全
        ArrayList<String> name = new ArrayList<>();
        ArrayList<Integer> value = new ArrayList<>();
        Scanner sc = new Scanner (System.in);
        
        /* Question (a) */
        String a;
        for (int i=0; i<5; i++) {
            System.out.println("Enter name: ");
            a = sc.nextLine();
            name.add(a);
        }
        name.add(2, "9"); // 在索引2的位置插入元素,此时name共有6个元素
        
        /* Question (b) */
        System.out.println("\n" + name);
        
        // 逻辑1:存储每个元素对应的索引值(符合你的预期[0,1,2,3,4,5])
        for(int i=0; i < name.size(); i++) {
            value.add(i);
        }
        
        // 逻辑2:如果你的需求是按原代码的size*3计算,就替换成下面的循环
        // for(int i=0; i < name.size(); i++) {
        //     int num = name.size() * 3;
        //     value.add(num);
        // }
        
        System.out.println(value);
    }
}

额外说明

  1. 重复的import java.util.ArrayList;可以删掉,因为import java.util.*;已经导入了java.util包下的所有类,包括ArrayList。
  2. 指定泛型后,你不需要再做(String) name.get(i)这种强制类型转换,代码更简洁安全。

内容的提问来源于stack exchange,提问作者akma flynn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 21:27:39