试图解决这个问题,但不幸的是,它返回了无效的输出
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"
有什么建议吗?
答案 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);
}
}