【问题标题】:Is there something I'm doing wrong to pick up this error?有什么我做错了来发现这个错误吗?
【发布时间】:2019-10-22 21:50:30
【问题描述】:

我是 Ti-basic 的新手,我正在尝试编写代码。我正在尝试制作这种“特殊类型的输入”程序。它有点像输入,但它会在按下时显示单词(并且不需要输入字母)

这是到目前为止我认为与错误有关的代码

:{41,42,43,51,52,53,54,55,61,62,63,64,65,71,72,73,74,75,81,82,83,84,85,91,92,93,94,102,103,103}→∟KEYS
:"ABCDEFGHIJKLMNOPQRSTUVWXYZθ :?"→Str7
:0→K
:""→Str1
:
:Repeat K=105
:getKey→K
:If max(∟KEYS-K)
:prgmFINDIND
:.........
:End

在prgmFINDIND里面,这是代码

:1+sum(not(cumSum(∟KEYS=K)))→I
://I is used later on in the code. It isn't pertaining to the problem.

我已经对此进行了一些暂停测试,我发现问题出在 if 语句中。它返回一个“INVALID DIM”错误。

有人知道怎么回事吗?

【问题讨论】:

  • 它可以在我的计算器上运行(顺便说一句,您可以使用If max(not(∟KEYS-K 来测试密钥是否在列表中),省略的部分中是否有一些相关代码?
  • 省略部分的内容只是获取∟KEYS中的索引K(因此名称为'FINDIND'(查找索引))。它将它存储到“我”,除此之外它什么也不做。我真的不认为它会影响它。不过我会尝试使用你的代码。
  • 希望非破坏性地删除 ∟KEYS 或将其长度设置为零的任何内容都是一个问题。一方面,我不希望该代码删除列表,但另一方面,您收到错误表明该列表已被删除
  • 我还以为发生了这样的事情。因此,我返回主屏幕并显示列表。 ∟KEYS 仍然显示 {41,42...}
  • 这真的很神秘,如果在评估条件时列表存在,它应该可以工作。我也只是想到了If max(∟KEYS=K,对于索引可能是max(seq(X,X,1,dim(∟KEYS))*(∟KEYS=K

标签: ti-basic


【解决方案1】:

在这部分(稍作修改)

Repeat K=105
    getKey->K
    If max(|LKEYS=K
        prgmFINDIND
    Str1+sub(Str7,I,1->Str1
End

prgmFINDIND 仅在按下的键在列表中时才被调用,否则索引 I 不会更改(并且可能隐式为零,或保留在那里的任何其他值)。

在 INVALID DIM 上按 GOTO 键实际上转到 Str1+sub(Str7,I,1->Str1,表示使用了错误的索引来索引 Str7。

可以通过使用If/Then 块来修复它,它可以覆盖多个语句:

Repeat K=105
    getKey->K
    If max(|LKEYS=K
    Then
        prgmFINDIND
        Str1+sub(Str7,I,1)->Str1
    End
End

【讨论】:

  • 对不起,我是个新手,但是 if 语句和 if then 语句有什么区别?
  • @yeeboi an If command 只影响下一个命令,一个If/Then 可以包含许多命令,直到它被相应的End 关闭(或用Else 半关闭,或程序结束时隐式关闭..有各种细节)
  • 哦,好的。谢谢你。我表示感谢,我只是在我的 if then 的地方添加一个 if then
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
  • 2014-09-12
  • 1970-01-01
  • 2010-09-13
  • 1970-01-01
  • 2014-03-24
相关资源
最近更新 更多