与条件运算符一起用于控制流时,比较运算符在Julia脚本文件中不起作用

时间:2019-08-22 03:44:43

标签: julia

我尝试了不同的运算符<,>等。当我将比较运算符与条件运算符结合使用时,似乎没有任何效果。

e = readline()

if e == 0
    println("e is equal to 0")
else
        println("e is not equal to 0")
end

预期结果很明显,如果e = 0,则打印e等于0,如果e!= 0,则打印e不等于0。

但是,它始终打印底行,e不等于0。

2 个答案:

答案 0 :(得分:2)

这是因为readline返回的字符串永远不会等于整数(根据== Julia使用的定义)。

以下是实现所需目标的一些可能方法:

  • 改为比较字符串文字:if e == "0"
  • 使用tryparseif tryparse(Int, e) == 0(如果nothing不是数字文字,将返回e
  • 使用parse,但使用try / catch代替if
    try
        p = parse(Int, e)
        p == 0 ? println("e is 0") : println("e is not 0")
    catch
        println("not even an integer.")
    end
    

答案 1 :(得分:0)

if返回您不期望的分支的原因是@phg给您的(您被String得到了readline())。

对于我的代码,我使用以下函数来解析终端中提供的用户提供的数据:

function getUserInput(T=String,msg="")
  print("$msg ")
  if T == String
      return readline()
  else
    try
      return parse(T,readline())
    catch
     println("Sorry, I could not interpret your answer. Please try again")
     getUserInput(T,msg)
    end
  end
end

sentence = getUserInput(String,"Which sentence do you want to be repeated?");
n        = getUserInput(Int64,"How many times do you want it to be repeated?");
[println(sentence) for i in 1:n]
println("Done!")