Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
简单的Ruby输入刮刀_Ruby_Hash_Char - Fatal编程技术网

简单的Ruby输入刮刀

简单的Ruby输入刮刀,ruby,hash,char,Ruby,Hash,Char,我对ruby完全是新手,我想就这个ruby脚本寻求一些帮助 它应该接收一个字符串并找出哪个字符出现得最频繁。它使用一个散列来实现这一点,它将所有字符存储在一个散列中,然后对其进行迭代以找到具有最大值的字符。到目前为止,它似乎没有正常工作,我不知道为什么。就我所知,它可以通过打印语句正确地读取字符。感谢您的帮助 谢谢 puts "Enter the string you want to search " input = gets.chomp charHash = Hash.new input.

我对ruby完全是新手,我想就这个ruby脚本寻求一些帮助

它应该接收一个字符串并找出哪个字符出现得最频繁。它使用一个散列来实现这一点,它将所有字符存储在一个散列中,然后对其进行迭代以找到具有最大值的字符。到目前为止,它似乎没有正常工作,我不知道为什么。就我所知,它可以通过打印语句正确地读取字符。感谢您的帮助

谢谢

puts "Enter the string you want to search "
input = gets.chomp

charHash = Hash.new

input.split("").each do |i| 
    if charHash.has_key?(i)
        puts "incrementing"
        charHash[i]+=1
    else
        puts"storing"
        charHash.store(i, 1)
    end
end

goc = "" 
max = 0 
charHash.each { |key,value| goc = key  if value > max  }


puts "The character #{goc} occurs the most frequently"

您的代码有两个主要问题:

正如Holger刚才所评论的,您必须使用+=1而不是++ 存储:i,1存储符号:i,你想存储i吗 在工作代码中修复这些结果我在这里使用snake_案例:

char_hash = Hash.new

input.split("").each do |i|
  if char_hash.has_key?(i)
    char_hash[i] += 1
  else
    char_hash.store(i, 1)
  end
end
通过使用0作为默认哈希值,可以忽略该条件,并可以将split.each替换为:

最后,您可以使用以下命令将哈希传递到循环中:


我可能错过了一些东西,但似乎

charHash.each { |key,value| goc = key  if value > max  }
你需要像这样的东西

charHash.each do |key,value| 
  if value > max then
    max = value
    goc = key
  end
end

注意max=value语句。在当前实现中,即在不更新max变量的情况下,文本中至少出现一次的每个字符都满足该条件,并且最终得到最后一个字符。

Ruby没有++运算符。使用charHash[i]+=1。另外,下次,请先用谷歌搜索你的错误消息。FACEPALM。我也用谷歌搜索了一下。嘎。谢谢这听起来像是一个无处不在的家庭作业。我们在Ruby中使用snake_案例来表示变量和方法。CamelCase用于课程和模块。感谢您的帮助!这很有帮助
charHash.each { |key,value| goc = key  if value > max  }
charHash.each do |key,value| 
  if value > max then
    max = value
    goc = key
  end
end