Java将用户输入存入字符数组遇数组越界问题求解
解决Java字符数组越界问题:新手友好的简洁方案
嘿,作为编程新手遇到数组越界很正常,我来给你拆解问题并给个简洁的解决方案!
你的代码核心问题
首先看你代码里的数组声明:
char[] ToEdit = new char [];
这行是错误的——Java要求初始化数组时必须明确指定长度,不然JVM不知道要给这个数组分配多少内存空间。这是导致你后续越界错误的根源之一,哪怕你后来调整了长度,可能也没对应上循环的次数。
修正后的完整代码
我给你写了一段修正后的可运行代码,注释里标了关键改进点:
import java.util.Scanner; public class Main { public static void main(String[] args) { // 初始化长度为5的字符数组,和循环次数i<5完全匹配 char[] toEdit = new char[5]; Scanner sc = new Scanner(System.in); for (int i = 0; i < 5; i++) { System.out.print("请输入第" + (i+1) + "个字符: "); // 只取输入的第一个字符,避免用户输入多字符导致的异常 toEdit[i] = sc.next().charAt(0); } // 打印输出字符数组 System.out.println("\n你输入的字符数组内容是:"); for (char c : toEdit) { System.out.print(c + " "); } sc.close(); // 用完Scanner记得关闭,养成良好编程习惯 } }
关键改进说明
- 明确数组长度:
new char[5]直接指定数组能存5个字符,和你的循环次数i<5完全对应,从根源避免了越界问题。 - 规范变量命名:把
ToEdit改成了toEdit,Java遵循小驼峰命名法,新手尽早养成这个习惯会让代码更易读~ - 安全获取输入:用
sc.next().charAt(0)确保只取用户输入的第一个字符,就算用户不小心输入了一串字符,也不会导致程序出错。 - 关闭资源:调用
sc.close()释放Scanner占用的资源,这是个容易被忽略但很重要的细节。
新手额外提示
如果以后你需要支持动态数量的输入(比如不确定用户要输入多少个字符),可以用ArrayList<Character>代替数组,它的长度可以自动调整,比数组更灵活,等你熟悉基础数组操作后可以去了解这个容器~
内容的提问来源于stack exchange,提问作者Sahib Saini
相关产品推荐
相关产品推荐

