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

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));
    }
}

代码说明

  1. 计算数组长度:max - min - 1,因为要包含的是min+1到max-1的所有整数,总个数为(max-1) - (min+1) + 1 = max - min -1。
  2. 创建对应长度的数组,通过循环给每个元素赋值,从min+1开始依次递增。
  3. 用Arrays.toString()打印整个数组,符合期望输出格式。

内容的提问来源于stack exchange,提问作者Zeynab Moghaddas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 22:38:11