无效的退货,原因未知

时间:2019-09-08 17:35:24

标签: c#

试图解决这个问题,但不幸的是,它返回了无效的输出

Rgb(255, 255, 255) # returns FFFFFF
Rgb(255, 255, 300) # returns FFFFFF
Rgb(0,0,0) # returns 000000
Rgb(148, 0, 211) # returns 9400D3

我写的是

using System;

public class Kata
{
  public static string Rgb(int r, int g, int b) 
  {
    return String.Format("{0:X2}{1:X2}{2:X2}", r, g, b);
  }
}

输出

  Expected string length 6 but was 7. Strings differ at index 4.
  Expected: "FFFFFF"
  But was:  "FFFF12C"

有什么建议吗?

2 个答案:

答案 0 :(得分:3)

您提供的样本输入错误。如果运行以下行:

Rgb(255, 255, 300) # returns FFFFFF

您会看到函数真正返回FFFF12C

示例所暗示的是您应该接受的最大值是255,任何高于该值的值都应视为255。

如果您将功能更改为仅执行此操作

public static string Rgb(int r, int g, int b) 
{
    return String.Format("{0:X2}{1:X2}{2:X2}", Math.Min(r, 255), Math.Min(g, 255), Math.Min(b, 255));
}

它现在将为示例数据返回FFFFFF,并正确对待其他值。

答案 1 :(得分:1)

数据类型应该是一个字节,并且300无效。

using System;

public class Kata
{
  public static string Rgb(byte r, byte g, byte b) 
  {
    return String.Format("{0:X2}{1:X2}{2:X2}", r, g, b);
  }
}