getRGB()的输出

时间:2015-05-27 17:22:52

标签: java colors

我正在制作一个Connect Four游戏,我需要为游戏设置我的棋子,它们将是BlackRed,以获得检测胜利的算法的int值它使用2D ArrayConnectFourPieces构造函数接受一个Color,然后像这样存储:

public ConnectFourPieces(Color color) 
{
    pieceColor = color;
}

目标是让Red件的值1Black件的值为2。为了解决这个问题,我和pieceColor.toString()一起玩,但意识到输出不是我想要的。所以我找到了getRGB()方法,它返回了RGB code的颜色。当我用这样测试时:

Color col = Color.RED;//also was Color.BLACK System.out.println(col.getRGB());

RGB value Black-16777216Red-65536Colorint。我的问题是:1)这个输出是否正确? 2)这个输出在所有系统上是否都是恒定的,我希望它是,但我不确定? 3)有没有更好的方法来检查作品的using System; using System.Web.Security; public partial class Login : System.Web.UI.Page { protected void btnSubmit_Click( object sender, EventArgs e ) { // Note: Add code to validate user name, password. This code is for illustrative purpose only. // Do not use it in production environment. FormsAuthentication.RedirectFromLoginPage( txtUserName.Text, false ); } } 是否为其分配xslt:text值?

5 个答案:

答案 0 :(得分:2)

你这样做是错误的。你应该从它的类型中推断出它的颜色,而不是从它的颜色中推断出它的颜色。

为片段类型定义枚举:

public enum PieceType {
    BLACK, RED
}

然后定义你的Piece类,它应该有一个基于其类型的颜色:

public class Piece {
    private PieceType type;

    public Piece(PieceType type) {
        if (type == null) {
            throw new NullPointerException("the piece type is mandatory");
        }
        this.type = type;
    }

    public PieceType getType() {
        return type;
    }

    public Color getColor() {
        if (type == PieceType.BLACK) {
            return Color.BLACK;
        }
        else {
            return Color.RED;
        }
    }
}

请注意,这使得无法创建绿色或蓝色部分,这是一件好事,因为它们没有意义。

答案 1 :(得分:0)

颜色实现等于,所以为什么不int myColor=Color.RED.equals(color)?1:2。 (或者如果你想在第三种颜色传递时引发错误,可以使用两个三元运算符?

答案 2 :(得分:0)

当您在范围(0,255)中传递R,G,B值时,

Color.RED (or) Color.BLACK实际上会在内部创建sRGB值。

sRGB值与R,G,B值不同。如果要定义预定义颜色常量以外的颜色,请使用Color(int, int, int)构造函数。每个int分别用于R,G,B,范围为0到255.

I got an RGB value for Black as -16777216 and Red as -65536

这些是sRGB值,而不是RGB。如果要打印出给定Color对象的实际R,G,B值,则在其上调用toString()方法。

答案 3 :(得分:0)

听起来你想要做的就是使用Enum。这样的事情怎么样:

public enum ConnectFourColor {
    RED (1), BLACK(2);

    private final int colorCode;

    public ConnectFourColor(int colorCode) {
        this.colorCode = colorCode;
    }

    public int getColorCode() {
        return this.colorCode;
    }
}

你会像这样使用它:

ConnectFourColor redColor = ConnectFourColor.RED;
System.out.println(redColor.getColorCode()); //prints 1

答案 4 :(得分:-1)

我同意JP:

    Color color = Color.black;          // Black RGB (0,0,0)
    System.out.println(color.getRed()); // 0
    color = Color.red;                  // Red RGB (255,0,0)
    System.out.println(color.getRed()); // 255

相同的方法,根据颜色有不同的结果。