尝试用用户输入填充数组

Trying to fill an array with user input

本文关键字:填充 数组 输入 用户      更新时间:2023-10-16

我遇到了一个问题。我正在尝试将用户输入的值存储到数组中,直到他们使用 do-while 循环输入 -1。这是我的代码示例:

int j=0;
    do{
        cin >> nodes[j];
        j++;
    }
    while (nodes[j] != -1);

有人可以告诉我为什么这不起作用以及更好的方法是什么?谢谢!

它不起作用,因为您在接收输入后和读取输入之前递增了索引结束 (j)。您可以改为比较节点[j-1] == -1

同样重要的是,如果您没有输入最大数量的元素,您可能会超出数组。

在进行比较nodes[j] != -1时,j不是已经递增了吗?

另外,我认为我们不想将哨兵-1存储到数组中。

for( int j = 0; j != NodeMax; ++j) {
    int tmp = 0;
    cin >> tmp;
    if( tmp == -1 ) {
        break;
    }
    node[ j ] = tmp;
}

正如@Arun提到的,选中nodes[j] != -1j已经增加。

修改如下:

do {
    cin >> nodes[j];
} while (nodes[j++] != -1);

语句while (nodes[j] != -1);永远不会为真,因为您在检查值之前递增j并移动到下一个索引。更好的方法是:

do{
    cin >> nodes[j];
}
while (j < SIZE && nodes[j++] != -1);

nodes[j]不是您输入的nodes[j],因为它已被++ ,试试这个: while(cin>>node[j++]);

你在节点[j]!=-1检查之前递增j。要么这样做

int j=-1;
    do{
        j++;
        cin >> nodes[j];
    }
    while (nodes[j] != -1);

int j=0;
        do{
            cin >> nodes[j];
        }
        while (nodes[j++] != -1);

int j=0;
while(cin>>nodes[j] && nodes[j]!=-1)
{
     j++;
}