Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.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 on rails 按字母顺序排列的字符串_Ruby On Rails_Ruby_String - Fatal编程技术网

Ruby on rails 按字母顺序排列的字符串

Ruby on rails 按字母顺序排列的字符串,ruby-on-rails,ruby,string,Ruby On Rails,Ruby,String,我对Ruby是新手。我已经用Java编写了一个解决方案 public boolean checkOrder(String input) { boolean x = false; for (int i = 0; i < input.length() - 1; i++) { if (input.charAt(i) < input.charAt(i + 1) || input.charAt(i) == input.charAt(i +

我对Ruby是新手。我已经用Java编写了一个解决方案

public boolean checkOrder(String input) {
        boolean x = false;
        for (int i = 0; i < input.length() - 1; i++) {
            if (input.charAt(i) < input.charAt(i + 1) || input.charAt(i) == input.charAt(i + 1)) {
                x = true;
            } else {
                return false;
            }
        }
        return x;

    }
我想在ruby中实现同样的功能,如何将其转换为ruby。谢谢。

根据要求:

def checkOrder(input)
  input.chars.sort == input.chars.to_a
end
def checkOrder(input)
  x = false
  (input.length-1).times do |i|
    if input[i] < input[i+1] or input[i] == input[i+1]
      x = true
    else
      return false
    end
  end
  x
end

Sam答案的变体,以防您希望将其作为字符串方法:

class String
  def sorted?
    self.chars.sort == self.chars.to_a
  end
end

'abc'.sorted?
'acb'.sorted?

该方法做什么?检查字符串是否按字母顺序排列。用简单的话解释该方法应该做什么?还有,你试了什么?谢谢你的回复。我想做的是将每一行Java代码映射到Ruby,这样我就可以理解了。@wali为什么需要一行Ruby呢?我懂Java,并且每当我试图将Ruby翻译成Ruby时,我都试图从web资源中学习Ruby。wali将一行一行地从一种语言翻译成另一种语言是一个坏主意。Ruby与Java有很大的不同,因此,通过这个简单的示例,您可以看到这里没有直接映射。您最好放弃Java,将语言基础知识应用到Ruby中,以了解内存、条件、循环结构,而不是像Java一样编写Ruby。或者,您可以在0中使用i..input.length-1代替input.length.times do | i |最后一行不需要显式返回,但是它也不应该从times块中返回。Sam,我认为您需要input.length-1.times,并且您的第二个返回x需要向下移动一行。self无论如何都是隐式接收器。不用客气。添加self是一个坏主意?我养成的习惯。因为像self[:foo]这样的东西,你离不开它-