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

能否用该for循环向ArrayList输入10个姓名?有无更优实现方式?

你的代码无法正常运行,我来帮你修正并提供更好的实现方式

首先得指出你代码里的两个关键错误:

  • 类型不匹配问题:你先声明了ArrayList<String>类型的names,但后面又试图赋值一个Names[10]数组(这里应该是笔误,应该是String[10])——ArrayList和数组是完全不同的类型,不能直接这样赋值。
  • ArrayList的set方法使用错误:set方法是用来替换ArrayList中已存在索引位置的元素,但你的ArrayList初始是空的,调用set(0, ...)会直接抛出IndexOutOfBoundsException异常。

修正后的基础版本

这是能正常运行的代码,用add方法向ArrayList中添加元素:

import java.util.ArrayList;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        ArrayList<String> names = new ArrayList<>();
        System.out.println("Enter 10 names: ");
        
        for (int counter = 0; counter < 10; counter++){
            // 使用add方法向ArrayList末尾添加新元素
            names.add(scan.nextLine());
        }
        
        // 可选:验证输入结果
        System.out.println("\nYou entered these names:");
        for (String name : names) {
            System.out.println(name);
        }
        
        scan.close(); // 记得关闭Scanner资源,避免资源泄漏
    }
}

更好的实现方式

根据你的需求,有几种更合适的写法:

1. 固定数量输入:用数组更简洁

如果确定就是要输入10个名字,使用数组会比ArrayList更直接,代码也更简洁:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String[] names = new String[10];
        System.out.println("Enter 10 names: ");
        
        for (int counter = 0; counter < 10; counter++){
            names[counter] = scan.nextLine();
        }
        
        // 验证输出
        System.out.println("\nYou entered these names:");
        for (String name : names) {
            System.out.println(name);
        }
        
        scan.close();
    }
}

2. 灵活数量输入:用while循环适配任意输入量

如果想让程序更灵活(比如允许用户输入任意数量的名字,直到输入"done"结束),可以用while循环实现:

import java.util.ArrayList;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        ArrayList<String> names = new ArrayList<>();
        System.out.println("Enter names (type 'done' to finish): ");
        
        while (true) {
            String input = scan.nextLine().trim();
            // 输入done时结束循环
            if (input.equalsIgnoreCase("done")) {
                break;
            }
            // 过滤空输入,避免添加空字符串
            if (!input.isEmpty()) {
                names.add(input);
            }
        }
        
        System.out.println("\nYou entered " + names.size() + " names:");
        for (String name : names) {
            System.out.println(name);
        }
        
        scan.close();
    }
}

内容的提问来源于stack exchange,提问作者brady morgan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:17:15