如何在Java中使用for循环结合Scanner实现多次输入存入数组
问题原因
你编写的代码核心错误是接收输入的for循环末尾多了一个多余的分号:
for(a=0;a<number.length;a++); // 末尾的分号会导致循环体为空
这个分号会被Java识别为for循环的空循环体,循环执行时只会把变量a从0累加至20,不会执行后续大括号内的输入逻辑。等循环结束后大括号内的代码只会执行1次,此时a的值为20,访问number[20]还会触发数组下标越界异常。
修正后代码
import java.util.Scanner; public class array2 { public static void main(String[]sef) { int a=0; int number[]=new int[20]; Scanner scan=new Scanner(System.in); // 删掉for循环末尾的分号即可正常执行多轮输入逻辑 for(a=0;a<number.length;a++) { System.out.println(a+"번째 학생의 숫자를 입력하십시오"); number[a]=scan.nextInt(); } scan.close(); // 如果需要输出全部20个元素,可以把a<10改成a<number.length for(a=0;a<10;a++) { System.out.println(number[a]); } } }
可选优化建议
- 可以给输入逻辑增加非整数输入的异常捕获,避免用户输入非法内容导致程序崩溃
- 变量命名可以更具语义化,比如把变量
a改为index,提高代码可读性 - 如果数组长度需要灵活调整,可以把数组长度定义为常量,方便后续统一修改
内容的提问来源于stack exchange,提问作者beoarwa
相关产品推荐
相关产品推荐

