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

C#技术求助:如何实现数组依次存储用户输入值而非覆盖slot 0

解决数组输入值反复覆盖第一个位置的问题

我明白你的问题了——每次用户输入值都被存在数组的第一个位置,完全覆盖了之前的内容,而你想要的是每次输入都依次存在下一个空位置,输完就回到主菜单,下次输入自动用下一个slot。这问题其实很常见,根源就是你没跟踪当前该存到哪个索引位置~

核心问题分析

你当前的代码应该是固定使用索引0来存储输入值,比如每次都写array[0] = 输入值,自然每次都会覆盖第一个位置。要实现依次存储,你需要一个变量来记录「下一个要存储的数组位置」。

解决方案步骤

  1. 新增索引跟踪变量:定义一个比如叫currentIndex的变量,初始值设为0,它代表下一个要存储值的数组索引。
  2. 存储值后更新索引:当用户输入值并存储到array[currentIndex]后,把currentIndex加1,这样下次就会自动指向数组的下一个空位置。
  3. 增加数组边界检查:避免数组存满后继续输入导致越界错误,先判断currentIndex是否小于数组长度,再执行存储操作。

代码示例(以C语言为例)

错误代码(问题重现)

#include <stdio.h>

int main() {
    int arr[5];
    int choice, value;
    
    while(1) {
        printf("主菜单:\n1. 输入值\n2. 查看数组\n3. 退出\n");
        scanf("%d", &choice);
        
        switch(choice) {
            case 1:
                printf("请输入值:");
                scanf("%d", &value);
                arr[0] = value; // 固定存到索引0,每次覆盖
                break;
            case 2:
                printf("数组内容:");
                for(int i=0; i<5; i++) {
                    printf("%d ", arr[i]);
                }
                printf("\n");
                break;
            case 3:
                return 0;
            default:
                printf("无效选项!\n");
        }
    }
}

修改后的正确代码

#include <stdio.h>

int main() {
    int arr[5];
    int choice, value;
    int currentIndex = 0; // 新增:跟踪当前存储的位置
    
    while(1) {
        printf("主菜单:\n1. 输入值\n2. 查看数组\n3. 退出\n");
        scanf("%d", &choice);
        
        switch(choice) {
            case 1:
                // 先检查数组是否已满
                if(currentIndex >= 5) {
                    printf("数组已满,无法再输入新值!\n");
                    break;
                }
                printf("请输入值:");
                scanf("%d", &value);
                arr[currentIndex] = value; // 存到当前索引位置
                currentIndex++; // 索引后移,下次存下一个位置
                printf("值已存入数组第%d个位置,返回主菜单\n", currentIndex-1);
                break;
            case 2:
                printf("数组已存储的内容:");
                for(int i=0; i<currentIndex; i++) { // 只打印已存入的有效内容
                    printf("%d ", arr[i]);
                }
                printf("\n");
                break;
            case 3:
                return 0;
            default:
                printf("无效选项,请重新选择!\n");
        }
    }
}

关键改进点

  • currentIndex的使用:每次存储后自增,确保下次输入自动指向空的数组位置
  • 数组满的判断:防止越界访问,提升程序健壮性
  • 查看逻辑优化:只遍历到currentIndex,避免打印未初始化的垃圾值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 06:54:37