Java数组使用for循环执行却无输出,求技术指导
嘿,我来帮你揪出这段代码没输出的问题,顺便给你几个实用小建议——作为编程新手,这类循环条件的坑确实很容易踩:
核心问题:循环条件写反了,代码块根本没执行!
你看这两个for循环的条件:i == list.length。咱初始时i是0,而list.length是你输入的长度(比如你输入3,那就是3),0和3肯定不相等啊,所以循环体里的代码一次都没跑起来,自然就没输出了!
正确的遍历数组的条件应该是i < list.length,这样i从0开始,一直跑到length-1(数组的索引就是从0到length-1的,对吧?),才能把数组的每个元素都处理到。
还有个小bug:随机数生成逻辑不对
你写的(int)(Math.random()+ 1) * 100会先把Math.random()+1转成int——Math.random()是0到1之间的浮点数,加1后是1到2,转int后只会得到1,再乘100就永远是100,这哪是随机数啊😂
如果想生成1到100之间的随机整数,应该改成这样:
list[i] = (int)(Math.random() * 100) + 1;
先让Math.random()乘100,得到0到99.999...的浮点数,转int后是0到99,再加1就变成1到100啦。
修正后的完整代码
我把这些问题都改好了,你可以直接运行试试:
import java.util.Scanner; public class ArrayDoubleValues { public static void main(String[] args) { Scanner scan = new Scanner(System.in); // 提示输入数组长度 System.out.println("Length: "); int length = scan.nextInt(); int[] list = new int[length]; // 填充数组,这里我保留了你原来打印length的逻辑,加了空格让输出更清晰 for (int i = 0; i < list.length; i++){ list[i] = (int)(Math.random() * 100) + 1; System.out.print(list.length + " "); } System.out.println(); // 换行分隔 // 遍历打印数组的每个元素 for(int i = 0; i < list.length; i++){ System.out.println(list[i]); } scan.close(); // 别忘了关闭Scanner,养成良好的资源管理习惯 } }
新手小Tips
- 写代码一定要注意格式化(换行、缩进),你原来的代码挤成一团,很容易漏掉循环条件的错误;
- 数组的索引范围是
0到length-1,所以遍历数组的循环几乎都是用i < array.length作为条件,这是Java里的常规操作,记下来哦~
内容的提问来源于stack exchange,提问作者Phantom
相关产品推荐
相关产品推荐

