2016-12-18 2 views
0

Je travaille sur mon projet d'université. Mon problème que j'ai solveur système n-équations avec la possibilité de donner une solution utilisateur et de vérifier si elle est bonne ou non. Mon code de vérification de la solution suit:2 même nombre pas même en double java

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(); 
     } 

Et le problème est en sortie. J'ajoute des images avec sortie.

Right solution

Problem

J'ajoute que nous devons coder en BlueJ. Merci pour l'aide.

+1

Vous ne devez pas comparer les doubles. C'est parce que deux valeurs différentes pour double peuvent avoir la même représentation binaire. Veuillez vous reporter à IEEE-754 pour des explications sur ce que Java devrait implémenter mais je ne sais pas. – user902384

+1

Et indice; votre code est difficile à lire. Ne mettez pas tous les trucs dans une seule méthode dans un seul commutateur. Au lieu de cela: créez de nombreuses petites méthodes d'aide qui font chacune une seule chose; et ensuite les utiliser ensemble. – GhostCat

Répondre

0

utilisez BigDecimal au lieu de double, alors vous n'aurez pas le problème de la comparaison double