Java中2D数组的声明与实现(面向过程编程)考试应急求助
别慌!用出租车营收例子把2D数组给你讲透
兄弟,临考两天卡壳在2D数组上太闹心了!我当年考试前一天才搞懂这个,咱们用你给的出租车例子一步步拆,保证你看完就通。
先搞懂:2D数组到底是什么?
你就把它当成一个表格——行是一排,列是一列,每个单元格就是数组里的一个值。Java里的2D数组本质是「数组的数组」:比如int[][] 变量名 = new int[行数][列数];,就像你画了一个行数×列数的表格。
对应到你的题目:
- 我们要记录28天的营收,那可以把「行」设为天数(总共28行,索引从0到27,对应第1天到第28天)
- 假设司机跑3个站点,每个站点分「早/中/晚」3个时段,那「列」就设为9列(3个站点×3个时段,索引0-8对应站点1早、站点1中、站点1晚、站点2早...以此类推)
所以第一步,定义这个2D数组:
// 28行(天),9列(站点+时段组合) double[][] dailyRevenue = new double[28][9];
怎么用这个数组?
1. 存数据(比如录入某天某时段的营收)
比如第3天(索引是2,因为从0开始),站点2的晚班营收是180块,就这么写:
// 站点2晚班对应的列索引是:(2-1)*3 + 2 = 5(站点1是0-2,站点2是3-5,晚班是每个站点的第3个时段,索引+2) dailyRevenue[2][5] = 180.0;
2. 取数据(比如查某天的总营收)
用嵌套for循环遍历:
// 查第5天(索引4)的总营收 double totalDay5 = 0.0; for (int col = 0; col < dailyRevenue[4].length; col++) { totalDay5 += dailyRevenue[4][col]; } System.out.println("第5天总营收:" + totalDay5);
3. 统计有用信息(比如站点1早班这28天的总营收)
站点1早班对应的列索引是0,所以遍历所有行的第0列:
double totalStation1Morning = 0.0; for (int row = 0; row < dailyRevenue.length; row++) { totalStation1Morning += dailyRevenue[row][0]; } System.out.println("站点1早班28天总营收:" + totalStation1Morning);
完整示例代码
给你写个可运行的小例子,模拟录入+统计:
public class TaxiRevenueTracker { public static void main(String[] args) { // 定义28天,3个站点×3个时段=9列 double[][] dailyRevenue = new double[28][9]; // 模拟录入前3天的部分数据 // 第1天(索引0):站点1早班120,站点2中班150,站点3晚班200 dailyRevenue[0][0] = 120.0; dailyRevenue[0][4] = 150.0; dailyRevenue[0][8] = 200.0; // 第2天(索引1):站点1晚班180,站点3早班130 dailyRevenue[1][2] = 180.0; dailyRevenue[1][6] = 130.0; // 统计站点1早班总营收 double station1MorningTotal = 0.0; for (int day = 0; day < 28; day++) { station1MorningTotal += dailyRevenue[day][0]; } System.out.println("站点1早班28天总营收(含未录入的0值):" + station1MorningTotal); // 统计第1天总营收 double day1Total = 0.0; for (int slot = 0; slot < 9; slot++) { day1Total += dailyRevenue[0][slot]; } System.out.println("第1天总营收:" + day1Total); } }
关键知识点(考试必记)
- 2D数组的索引从0开始,别搞混天数和索引!比如第28天对应的是
dailyRevenue[27][...] - 获取行数:
dailyRevenue.length - 获取列数:
dailyRevenue[0].length(前提是每行列数相同,题目里都是固定的,所以没问题) - 遍历必须用嵌套for循环,外层处理行,内层处理列
兄弟,两天时间足够把这些练熟了,把上面的代码跑一遍,改改参数试试,绝对没问题!
内容的提问来源于stack exchange,提问作者abidm98
相关产品推荐
相关产品推荐

