gpt4 book ai didi

Ruby/cup 排序算法不会检查字符串是否为整数

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:08:06 25 4
gpt4 key购买 nike

我(几乎)做了一个杯子排序算法,它接受颜色和半径参数,然后吐出按半径长度排列的杯子名称。 示例输入

2
blue 7
10 red

示例输出

red
blue

问题是我想创建一个过滤器来检查拆分时第一个值是否为数字。然后将此数字除以 2,并将两个值反转。我试过 is_a? Integer 但在 irb 控制台中出现 expecting end of input 错误。我试过 == int

代码如下:

class Cup
attr_accessor :colour, :radius

def initialize(colour, radius)
@colour = colour
@radius = radius
end
end

cups = []

puts "How many cups are there?"
gets.to_i.times do |n|
puts "Enter Cup-#{n+1} colour & radius:"
value = gets.split " "
if
value.first.to_i == int?
then
value.first / 2
value.reverse
cups << Cup.new(value[0], value[1])
end
cups << Cup.new(value[0], value[1])
end
print cups.colour.sort_by { |cup| cup.radius }

非常欢迎有关该算法的任何其他反馈。

最佳答案

用户在控制台中提供的任何输入都将是字符串,因此您可以执行以下操作,

puts "How many cups are there?"
gets.to_i.times do |n|
puts "Enter Cup-#{n+1} colour & radius:"
value = gets.chomp.split(" ")
order = Integer(value[0]) rescue false # order will have value if it is proper integer, else false
cups << (order ? Cup.new(value[1], value[0].to_i) : Cup.new(value[0], value[1].to_i))
end
cups.sort_by { |cup| cup.radius }.each { |cup| puts cup.colour } if cups.present?

to_i 的使用在这里无效,因为它将为字符串 'red' 返回 0

而且还假设用户确实输入了整数,否则代码将无法正常工作。

关于Ruby/cup 排序算法不会检查字符串是否为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53761154/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com