解析整数中的数字

时间:2018-08-09 22:12:24

标签: java integer render rectangles

我需要制作一个函数,该函数将用一种颜色填充> 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?

3 个答案:

答案 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的新手,我想按照自己的方式做事。