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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:33:39