0

このメソッドが混合数 (2 ではなく 1 つの変数として格納されている (2 1/2) など) を受け入れるようにするには、助けが必要です。現在、2 つの別々のテキスト フィールドからの int と frac があります。

public double convertFrac(int whole, String frac){
        if (frac == null || frac.equals(""))
            return whole;
        String[] parts = frac.split("/");
        return whole + (double)Integer.parseInt(parts[0]) / (double)Integer.parseInt(parts[1]);
    }

ボヘミアンからの提案のおかげでコードを編集しました。

あなたの基準によっては不格好かもしれませんが、私はそれを機能させました = D

public static double convertFrac(String frac){
        String wholeStr, num, denom, fraction;
        int whole = 0;
        String[] parts = frac.split(" ");
        wholeStr = parts[0];
        whole = Integer.parseInt(wholeStr);

        if(parts.length == 1){
            return whole;
        }

        wholeStr = parts[0];
        whole = Integer.parseInt(parts[0]);
        fraction = parts[1];
        String[] fracParts = fraction.split("/");
        num = fracParts[0];
        denom = fracParts[1];

        return whole + (double)Integer.parseInt(fracParts[0]) / (double)Integer.parseInt(fracParts[1]);
    }
4

1 に答える 1

4

これはバグ#1です:

if(frac == ""){ // tests if frac is the same object as the blank constant

使用する必要があります

if(frac.equals("")){ // tests if fraq is blank


これはバグ#2です:

num = Integer.parseInt(frac); // will explode if frac is actually a fraction


あなたが持っているものの代わりに、私はこれを単純化します:

public double convertFrac(int whole, String frac) {
    if (frac == null || frac.equals(""))
        return whole;
    String[] parts = frac.split("/");
    return whole + (double)Integer.parseInt(parts[0]) / (double)Integer.parseInt(parts[1]);
}

frac数字が 1 つしかないと考えるべきではありません。意味がないからです。空白か分数です。

于 2013-01-13T12:56:05.923 に答える