2016-08-27 10 views
-2

私は動作するはずですが、Javaではそれが気に入らないと思います。"互換性のない型:double型からint型に変換する可能性があります"エラーを修正するには

私はこのエラーを取得する:ここで

project5.java:10: error: incompatible types: possible lossy conversion from double to int 

int Low = Math.sqrt(count); 
        ^1 error 

は私のコードです:

import java.util.* 
public class project5 
{ 
    public static void main (String args[]) 
    { 
     int count = 1; 
     while (count < 11) { 
      Random r = new Random(); 
      int Low = Math.sqrt(count); 
      int High = count; 
      int Result = r.nextInt(High-Low) + Low; 
      System.out.println(count + "\t" + Math.sqrt(count)); 
      count++; 
     } 
    } 
} 

任意の提案?

+0

'Math.sqrt'はdoubleを返し、' int'を使用しています。 – DimaSan

+1

Math.sqrt(2)の結果がintであると本当に期待していますか? Math.sqrt(3)...? ;-) –

答えて

3

あなただけintに結果をキャストすることができます

int Low = (int) Math.sqrt(count); 

あなたは結果から、床を取ると罰金であればこれは、正常に動作します。あなたはそれを四捨五入したい場合、それは常にint範囲に収まるのcountとして

(int) Math.round(Math.sqrt(count)); 

それは、この特定のケースでintにキャストしても安全だが、intsqrtありません。

+0

これは完璧に感謝してくれました:) –

+0

@JustanotherITGuyうまくいけば私の答えを受け入れてください:) –

0

は、このエラーは、あなたがintdoubleを割り当てるしようとしているを示している...あなたは小数部分を失うことになる、

int Low = (int) Math.sqrt(count); 
0

をintにSQRTをキャスト。

Math.sqrt方法はdoubleを返す:https://docs.oracle.com/javase/7/docs/api/java/lang/Math.html#sqrt(double)

あなたは整数にこれを割り当てたい場合、あなたは、単にのような整数にキャストすることができます

int Low = (int)Math.sqrt(count); 

注:場合の結果sqrtメソッドの整数が整数でない場合、結果を整数にキャストすると結果の全部が整数に割り当てられます。

+0

私は質の高い回答を投稿する時間があり、元のポスターは編集を示唆しています:「あまりにも遅いsoo saaaaad sorryブル "。 noobsを助けることを試みるために喜んで、そしてその後それらがあなたに無礼であるように。 –

関連する問題