2017-08-09 18 views
0

は私が把握しようとして苦労していた場合に実行していない:なぜJavaコード次のコードでのステートメントが正常に実行されていない場合は理由書

double yint = -157.42; 
if(copy_denominator.contains("x^"+nextBottom))yint = -1*constant/d2; 

Log.d(PERIOD,"copy den: "+copy_denominator +" yint "+yint); 
//the Log statement above prints out that yint = 3.0; 

if(yint != -157.42) 
Log.d(PERIOD,"oblique 5 "+slope+"x + "+yint);//I expect this to print to Log 

if(yint == -157.42)Log.d(PERIOD,"oblique 6 "+slope+"x ");//This prints out. 

を私は知りませんstatement:if(yint!= -157.42)は実行されません。 私は以前これを見たことがない、Android Studioのバグかもしれない。

アドバイスありがとうございました

+0

あなたのコードのフォーマットは非常に悪いです。また、==と!=を使って浮動小数点の定数と比較するのは良い考えではありません。むしろ、比較の際にいくらかの誤差マージンを許容する。さらに、double型の変数 "yint"の名前を指定しないでください。また、それは "yint = 3.0;"という印字をしていますか?お役に立てれば。あなたの質問への答えを得ることを幸運。 – user643011

+0

あなたは正しいかもしれないと思います。私はこの誤差の計算の余裕をどのように試すことができるかを見てみましょう。 @ user643011 –

+0

はい、 "yint = 3.0" @ user643011が表示されます。私は、yint = 157.42を設定し、if(Math.abs(157.42 - yint)> 0.001)を使って修正しようとしますが、まだ実行されていません! –

答えて

0

これは非常に奇妙な質問です。コンテキストに関するより多くのコードスナップショットを投稿できます。以下は私のコンテキストスナップショットです。ヘルプ他人を願って、あなた:

のAndroid Studioの2.3.3

compileSdkVersion 25

buildToolsVersion "25.0.2"

minSdkVersionが16

targetSdkVersion 25

public class MainActivity extends AppCompatActivity { 

    private final String PERIOD = "PERIOD"; 

    private ArrayList<String> copy_denominator = new ArrayList<>(); 
    private int nextBottom = 2; 
    private final double constant = 6.0D; 
    private double d2 = 2.0D; 
    private String slope = "2.3"; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     copy_denominator.add("x^2"); 

     double yint = -157.42; 
     if (copy_denominator.contains("x^" + nextBottom)) yint = -1 * constant/d2; 

     Log.d(PERIOD, "copy den: " + copy_denominator + " yint " + yint); 
     //the Log statement above prints out that yint = 3.0; 

     if (yint != -157.42) 
      Log.d(PERIOD, "oblique 5 " + slope + "x + " + yint);//I expect this to print to Log 

     if (yint == -157.42) Log.d(PERIOD, "oblique 6 " + slope + "x ");//This prints out. 

    } 
} 

ログは大丈夫です:

[Logcat prints][1] 

ログ:

08-09 19:49:21.792 12323-12323/io.github.dkbai.appdemo D/PERIOD: copy den: [x^2] yint -3.0 

08-09 19:49:21.792 12323-12323/io.github.dkbai.appdemo D/PERIOD: oblique 5 2.3x + -3.0 
関連する問題