Java实现:根据用户输入的两个数值生成并打印指定范围数组
Java生成指定范围数组的问题解决
问题说明
我希望通过用户输入两个数值来生成一个数组并打印,但现有代码在输入5和25时无法正常运行。
期望输出:[6,7,....,23,24]
错误输出
输入min value: 5和max value:25时,系统输出:
[0, 0, 0, 0, 0][0, 0, 0, 0, 0, 0][0, 0, 0, 0, 0, 0, 0][0, 0, 0, 0, 0, 0, 0, 0][0, 0, 0, 0, 0, 0, 0, 0, 0][0, 0, 0, 0, 0, 0, 0, 0, 0, 0][0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0][0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0][0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0][0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0][0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0][0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0][0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0][0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0][0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0][0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0][0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0][0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0][0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0][0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
原代码
import java.util.Arrays; import java.util.Scanner; public class JavaApplication18 { public static void main(String[] args) { Scanner reader = new Scanner (System.in); System.out.print("min value: "); int min = reader.nextInt(); // Ask the user to input the minimum value System.out.print("max value: "); int max = reader.nextInt(); for (int a = min; a < max; a++) { int [] userArray = new int[a]; System.out.print(Arrays.toString(userArray)); } } }
问题分析
原代码逻辑错误:
- 循环中每次创建长度为
a的数组(a从min到max-1),数组默认初始化全为0,因此打印出一堆长度递增的全0数组。 - 未按照需求生成包含
min+1到max-1数值的数组。
修正后的代码
import java.util.Arrays; import java.util.Scanner; public class JavaApplication18 { public static void main(String[] args) { Scanner reader = new Scanner(System.in); System.out.print("min value: "); int min = reader.nextInt(); System.out.print("max value: "); int max = reader.nextInt(); // 计算数组长度:从min+1到max-1的元素个数 int length = max - min - 1; int[] userArray = new int[length]; // 填充数组元素 for (int i = 0; i < length; i++) { userArray[i] = min + 1 + i; } // 打印结果数组 System.out.println(Arrays.toString(userArray)); } }
代码说明
- 计算数组长度:
max - min - 1,因为要包含的是min+1到max-1的所有整数,总个数为(max-1) - (min+1) + 1 = max - min -1。 - 创建对应长度的数组,通过循环给每个元素赋值,从
min+1开始依次递增。 - 用
Arrays.toString()打印整个数组,符合期望输出格式。
内容的提问来源于stack exchange,提问作者Zeynab Moghaddas
相关产品推荐
相关产品推荐

