如何解决QBASIC中的错误“下标超出范围”?

问题描述 投票:-1回答:1

我正在尝试创建一个代码,该代码生成10到30范围内的随机数,但要确保没有重复的数字。当我运行代码时,它在(NumArray(Count)= Count)上显示“下标超出范围”。这是代码:

'Make an array of completely sorted numbers
  1. FOR Count = 10至30

  2. NumArray(Count)= Count

    1. 下一个计数
    2. 随机计时器
    3. FOR Count = 10到30
    4. 数字=(RND *(31-计数))+ 10
    5. PRINT#1,NumArray(Number)
    6. FOR计数器=数字TO 30-计数
    7. NumArray(Counter)= NumArray(Counter + 1)
    8. 下一个计数器
    9. 下一个计数

帮助。这实际上不是我的代码。复制并粘贴以供我分配。

compiler-errors subscription subscript qbasic qb64
1个回答
0
投票

似乎您缺少一些DIM语句。

包含数字的变量默认情况下为SINGLE类型,因此您可能会看到类似FOR Counter = 18.726493 TO 20的信息,因为RND函数返回的数字介于0到1之间(不包括1),这意味着您将尝试使用NumArray(18.726493)将不起作用。

未明确声明的数组只能有10个索引从0到9的项目,但范围10-30要求您存储21个项目(30 - 10 + 1 = 21)。如果可以使您的代码更容易理解,您还可以指定自定义的上限和下限。将这些行添加到上面显示的代码的第一行之前:

DIM Number AS INTEGER
DIM NumArray(10 TO 30) AS INTEGER

这将确保Number仅包含整数(任何小数值都舍入为最接近的整数),并且NumArray将在NumArray(10)NumArray(30)的范围内工作,但不能使用NumArray(9),[C0 ],NumArray(8)等。索引必须在10-30的范围内。

我认为这应该可以解决您的代码,但是由于我不完全了解代码的工作原理,因此我不确定。至少,它将解决您代码中的类型和下标问题。

© www.soinside.com 2019 - 2024. All rights reserved.