如何将一维数组转为可用二维数组?编程作业求助
问题分析与修复方案
你的代码存在几个核心问题,导致无法编译和正确运行:
1. 数组声明错误
你错误使用了长度为0的二维数组(new int[0][7]),这类数组无法存储任何数据。而且统计数字出现次数不需要二维数组,用一维数组就能完成需求。
2. 输入逻辑完全失效
你的输入循环只是反复创建空数组,根本没有读取用户输入的数字并存储:
for(i=0;i<7;i++) numbers = new int [0][7];
这段代码完全没有调用input.nextInt()获取输入,等于无效操作。
3. 统计逻辑错误
- 二维数组的
numbers[i]是一个一维数组,直接用==比较两个数组是比较内存地址,不是数值; - 没有实现“统计次数”的核心逻辑,只是简单赋值,
count数组也从未被赋值。
修正后的代码
import java.util.Scanner; public class NumberCounter { public static void main(String[] args) { System.out.println("Ashanti's Assignment"); // 用一维数组存储输入的7个数字 int[] numbers = new int[7]; // 存储去重后的数字 int[] digits = new int[7]; // 存储对应数字的出现次数 int[] count = new int[7]; int uniqueCount = 0; Scanner input = new Scanner(System.in); System.out.println("Enter seven numbers: "); // 读取7个输入数字存入numbers数组 for (int i = 0; i < 7; i++) { numbers[i] = input.nextInt(); } // 去重并统计次数 for (int i = 0; i < 7; i++) { boolean isExist = false; // 检查当前数字是否已在去重数组中 for (int j = 0; j < uniqueCount; j++) { if (numbers[i] == digits[j]) { count[j]++; isExist = true; break; } } // 不存在则加入去重数组,初始化次数为1 if (!isExist) { digits[uniqueCount] = numbers[i]; count[uniqueCount] = 1; uniqueCount++; } } // 输出结果 System.out.println("The integers selected and their counts"); for (int i = 0; i < uniqueCount; i++) { System.out.println("Number " + digits[i] + " occurs " + count[i] + " times"); } input.close(); } }
关键修复点说明
- 将所有二维数组改为一维数组,贴合需求场景;
- 新增输入读取逻辑,真正把用户输入存入数组;
- 实现去重+统计的核心逻辑:遍历输入数组,检查每个数字是否已存在于去重数组中,存在则次数加1,不存在则新增并初始化次数为1;
- 用
uniqueCount记录去重后的数字数量,避免输出空的无效数据。
内容的提问来源于stack exchange,提问作者NayxAshanti
相关产品推荐
相关产品推荐

