【问题标题】:Why while loop is working randomly?为什么while循环随机工作?
【发布时间】:2014-04-16 00:41:49
【问题描述】:

当我的 while 循环随机工作时,我感到很困惑?

how.many<-function(fruit, number){
  string<-paste("How many",fruit,"?",sep=" ")
  fruit_number<-readline(string)
  print("fruit number")
  print(fruit_number)
  print("number")
  print(number)
  while(fruit_number > number){
    print("inside while")
    print("fruit number")
    print(fruit_number)
    print("number")
    print(number)
    print("ERROR: too many for the budget")
    string<-paste("How many",fruit,"?",sep=" ")
    fruit_number<-readline(string)
  }
  return(as.numeric(fruit_number))
}

这是我调用此函数的时间:

> source("fruit.R")
> how.many("apple",6)
How many apple ?3
[1] "fruit number"
[1] "3"
[1] "number"
[1] 6
[1] 3
> how.many("apple",10)
How many apple ?9
[1] "fruit number"
[1] "9"
[1] "number"
[1] 10
[1] "inside while"
[1] "fruit number"
[1] "9"
[1] "number"
[1] 10
[1] "ERROR: too many for the budget"
How many apple ?7
[1] "inside while"
[1] "fruit number"
[1] "7"
[1] "number"
[1] 10
[1] "ERROR: too many for the budget"
How many apple ?2
[1] "inside while"
[1] "fruit number"
[1] "2"
[1] "number"
[1] 10
[1] "ERROR: too many for the budget"
How many apple ?1
[1] 1

有什么提示吗?

【问题讨论】:

  • fruit_number 是一个字符,您尝试将其用作数字。这会导致问题。

标签: r function while-loop


【解决方案1】:

fruit_number 转换为数字,而不是字符串。

例如

fruit_number <- as.numeric(readline(string))

fruit_number <- as.integer(readline(string))

否则数字将作为字符串进行比较,“9”在字符串意义上大于“10”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-12
    • 2016-12-29
    • 2018-05-23
    • 1970-01-01
    • 2017-03-29
    • 1970-01-01
    相关资源
    最近更新 更多