2016-12-18 21 views
0

私は大学のプロジェクトに取り組んでいます。私の問題は、ユーザソリューションを提供し、それが良いかどうかをチェックする能力を持つn方程式システムソルバを持つことです。ソリューションチェックのコードは次のとおりです。2つの同じ番号はダブルジャンクで同じではありません

public void printSolution(double[] sol) { 
     System.out.println(); 
     System.out.println("Write 1 if you want to show solution or write 2 if you want to solve equations"); 
     Scanner riesenie = new Scanner(System.in); 
     int r = riesenie.nextInt(); 
     int N = sol.length; 
     switch (r) { 
      case 1: 
       System.out.println("----------------------------------------"); 
       System.out.println("Solution is:"); 
       for (int i = 0; i < N; i++) { 
        System.out.printf("%.2f ", sol[i]); 
       } 
        System.out.println(); 
      break; 
      case 2: 
       System.out.println("Write your solution"); 
       Scanner vysledok = new Scanner(System.in); 
       double[] v = new double[N]; 
       for (int i = 0; i < N; i++) { 
        v[i] = vysledok.nextDouble(); 
       } 

       for (int i = 0; i < N; i++) { 
        if (v[i] == (sol[i])) { 
         System.out.println("Your solution is right !");  
         System.out.println(); 
        }     
        else { 
         System.out.println("Your solution is not right, solution is:"); 
         for (i = 0; i < N; i++) { 
          System.out.printf("%.2f ", sol[i]); 
          System.out.println(); 
         } 
        } 
       } 

      break; 
      default: 
        System.out.println("Number out of range"); 
        System.out.println(); 
     } 

出力に問題があります。私は出力画像を追加しています。

Right solution

Problem

私たちはBlueJの中でコーディングする必要があると付け加えています。手伝ってくれてありがとう。

+1

ダブルスは比較しないでください。これは、doubleの2つの異なる値が同じバイナリ表現を持つためです。 Javaの実装方法はIEEE-754を参照してください。しかし、わかりません。 – user902384

+1

ヒント。あなたのコードは読みにくいです。すべてのものを1つのスイッチに入れてはいけません。代わりに、それぞれが1つのことを行う小さなヘルパーメソッドをたくさん作成します。それらを一緒に使用します。 – GhostCat

答えて

0

doubleの代わりにBigDecimalを使用すると、二重比較で問題が発生しません。

関連する問題