2012-02-17 16 views
0
long l = ((File)localObject).length(); 
    if (l >= 1024L) 
    { 
    if (l >= 1048576L) 
    { 
     if (l >= 1073741824L) 
     str = Float.toString(Math.round(100.0F * ((float)l/1.073742E+09F))/100.0F) + " GB"; 
     else 
     str = Float.toString(Math.round(100.0F * ((float)str/1048576.0F))/100.0F) + " MB"; 
    } 
    else 
     str = Float.toString(Math.round(100.0F * ((float)str/1024.0F))/100.0F) + " KB"; 
    } 
    else 
    str = Long.toString(str) + " B"; 

else str = Long.toOctalString(str)+ "B"; } return(String)str; }String型からjava型にfloat型にキャストできません。

別のエラーは、16番目の に、ここで私は、私はstrはあなたがする必要がある場合には文字列、あるとし9行目と12行目でエラーがJavaの

+0

文字列の浮動小数点型のキャストが機能すると考える原因は何ですか?文字列に不正な形式( '' ABCNOTA NUMBER ''')があるとどうなりますか?悪いデータのキャストはどうすればできますか?これがうまくいくように見えるドキュメントやチュートリアルを見たことがありますか? –

+1

最後の行にエラーがあります。おそらく 'str = Long.toString(l)+" B "' – enzom83

+2

と書くべきです。また、R.C.の「Clean code」という本をお読みください。マーティンネストされたif-else文、マジックナンバー、ネストされた引数を使ってコードを読むのは恐ろしいことです。チームメンバーがこのコードを理解する場合はどうなりますか?それは不可能。私は1〜2週間であなた自身でそれを理解することはできないと思っています。 – nhaarman

答えて

2

が見えるparseFloat方法。おそらく間違いがあり、代わりにl変数を使用するはずです。

7

に浮かぶように文字列からキャストすることはできませんです(float)strの代わりにFloat.valueOf(str)を使用してください。

(float)strではなく、(float)lを意味する可能性があります。

そしてenzom83で述べたように、あなたの最後の行は、おそらく次のようになります。strStringとき

str = Long.toString(l) + " B"; 
+0

ここで私はstr = Long.toString(str)+ "B"という行にエラーがあります。 Long型のtoString(long)メソッドは引数(String)には適用されません –

+0

私は編集しました - 私の間違い – assylias

2

あなたは(float)strを使用することはできません。

は、このに交換してください(と可能な例外をキャッチ!): Float.valueOf(str)

2

使用あなたはフロートに文字列strをキャストしようとしているようにFloat.parseFloat(str)

1

フム、私の英語のため申し訳ありません

strは、あなたがこの(float)strのようにフロートに変換することはできませんStringであれば、あなたが表す値に初期化された新しいfloat値を返しますparseFloat(String s)と呼ばれるFloat methodを、使用する必要があります。指定された文字列によって

関連する問題