0

こんにちは、テキストのフォントサイズと色の配列の頻度を取得しようとしています。単語の文字列があり、単語のサイズと色をサイズの全体的な値に応じて変更したい頻度を数えます。を除算しようとしましたfrequency/average *10 が、null が返されましたが、電卓では 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;
}

ご協力いただきありがとうございます

4

1 に答える 1

1

整数除算の動作は異なります。分子が分母より小さい場合、結果は 0 になります。たとえば、80/100 は 0 を返します。分子にその 10 を掛けてから割ります。

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

に変更する必要があります

int newFont = (int) (freq*10 / 100);
于 2013-01-09T18:47:17.473 に答える