我需要制作一个函数,该函数将用一种颜色填充> test
A B C gr col_name
1 5 NA NA 1 A
2 NA 2 NA 1 A
3 NA NA 1 1 A
4 1 NA NA 2 all_equal
5 NA 1 NA 2 all_equal
6 NA NA 1 2 all_equal
7 3 NA NA 3 A&C
8 NA 1 NA 3 A&C
9 NA NA 3 3 A&C
。
该方法看起来像这样
Rectangle
我想使用整数作为参数,例如public void fillRect(Rectangle rect, int color)
{
int red = color;
int green = color;
int blue = color;
g.setColor(new Color(red, green, blue));
g.fillRect(rect.getX(), rect.getY(), rect.getW(), rect.getH());
}
会导致红色的值200100150
(只有前三个数字)。
是否可以使用这种宽度的Java?
答案 0 :(得分:5)
您可以使用'%'和'/'这样的操作来做到这一点:
int blue = color % 1000;
color /= 1000;
int green = color % 1000;
color /= 1000;
int red = color;
还可以在开头添加一个简单的验证
if(color <= 99_999_999) { // I'm pretty sure that you need at least JDK7 to use '_' notation
//do sth
}
答案 1 :(得分:0)
如果您知道数字长度(即看起来所有整数的长度都为9),则可以使用模数和(整数)除:
int red = color / 1000000;
int green = color % 1000000 / 1000;
int blue = color % 1000;
如果没有,则可以将整数转换为字符串,将前三个字符作为子字符串,然后将其转换回整数。
答案 2 :(得分:-1)
转换为字符串并获取子字符串,然后再次将其转换为整数?好主意。这是我的代码
public void setColor(int color)
{
String newColor = Integer.toString(color);
g.setColor(new Color(Integer.parseInt(newColor.substring(0, 3)),
Integer.parseInt(newColor.substring(3, 6)),
Integer.parseInt(newColor.substring(6, 9))));
}
这比将整数传递给Color()慢得多吗? 我是Java的新手,我想按照自己的方式做事。