阵列的频率分布

时间:2013-01-09 18:43:40

标签: java

嗨我正在尝试获取文本字体大小和颜色的数组的频率,当我有一串单词并且我计算频率时我想根据它们的总体值改变单词和颜色的大小,我试图划分frequency/average *10但是给我null,但是在我的计算器上它给我ie,80/100 * 10 = 8,这将取8的索引并且具有180字体大小

任何人都可以帮我这个吗?

private static int[] fontWeight = { 40, 60, 80, 100, 120, 140, 160,180 };
private static Color[] Colors = { Color.blue, Color.cyan, Color.yellow, Color.green, Color.red,
        Color.orange, Color.pink,Color.pink  };

//主

  for (String str: wordList) {


            int wordFreq = randWord.getFrequency();//assume 80 comes here
            int fontSize = getFontSize(wordFreq);
            Font font = new Font(Font.SANS_SERIF, Font.ITALIC, fontWeight [fontSize ]);
            graphics.setFont(font);
            graphics.setColor(Colors[fontSize]);
            FontMetrics fm = graphics.getFontMetrics();

            graphics.drawString(randWord.getWord() + "", x, y);
            }

//方法

  private static int getFontSize(int freq) {

    int newFont = (int) (freq/100)*10;

    if (newFont >= 5) newFont = 6;
    // if(newFont<2)
    // newFont = 1;
    System.out.println("freq " + freq + " font index" + newFont + "  font size "
            + fontWeight[newFont]);

    return newFont;
}

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

整数除法的行为不同,如果分子小于分母,则结果为0.例如,80/100返回0.你要做的是将分子乘以10,然后除以它。

int newFont = (int) (freq/100)*10;

应该改为

int newFont = (int) (freq*10 / 100);