2017-03-01 6 views
-1

Dans ce programme, j'essaie d'obtenir la sortie suivante en cas de correction d'opérateur, ici, je veux obtenir la sortie pour vérifier si une chaîne est une expression arithmétique valide, puis imprimer valide & sinon (ex. a +, B + ou a + b + ou ab = c * d- et ainsi de suite ..) j'ai donc conçu ce code en Java mais, je ne reçois pas de sortie, quand j'ai essayé de faire une boucle pour vérifier le problème, mais le la valeur n'a pas été modifiée en dehors de la boucle. Quelqu'un peut-il m'aider avec ce problème?Quelqu'un peut-il m'aider avec cela? Je n'obtiens pas la sortie

code:

import java.util.Scanner; 

public class InvalidOperatorCheck { 

    public static void main(String[] args){ 
    int i = 0; 
    boolean flag = false; 

    Scanner scan = new Scanner(System.in); 

    System.out.println("Enter the Expression to test the string"); 
    String expression = scan.next(); 

    while (expression.isEmpty()) { 
     if (i % 2 == 1) { 
      if (expression.equals("+") || expression.equals("-") || expression.equals("/") || expression.equals("*")) 
       flag = false; 
     } 

     if (expression.length() - 1 == i) { 
      if (expression.contentEquals("[a-zA-Z]")) 
       flag = true; 
     } else { 
      flag = false; 
     } 

     i++; 
     i++; 
    } 

    if (flag == false) { 
     System.out.println("\nNot Valid\n"); 
    } else { 
     System.out.println("\nValid\n"); 
    }  
    } 
} 
+1

Vous avez créé une boucle sans fin qui soit jamais court ou arrête jamais. Vous devez faire en sorte que votre condition while devienne fausse une fois que c'est vrai ou que la boucle ne s'arrêtera jamais. Actuellement, il ne fonctionnera probablement jamais parce que votre condition est fausse et vous entrez seulement la boucle si ** rien ** a été entré –

+0

@ 911DidBush si (! Expression.isEmpty()) {scan.nextline() – Jelle

+0

@Viral Prajapati Vérifiez votre while condition cela devrait être 'while (! expression.isEmpty()) {// ici votre code}'. –

Répondre

0

Vous devez mettre à jour votre code comme ça, après faire le montage souhaité dans votre logique.

Exemple de code

import java.util.Scanner; 

    public class InvalidOperatorCheck{ 

     public static void main(String[] args){ 
      int i = 0; 
      boolean flag = false; 

      Scanner scan = new Scanner(System.in); 

      System.out.println("Enter the Expression to test the string"); 
      String expression = scan.next(); 

      while (!expression.isEmpty()) { 
       if (i % 2 == 1) { 
        if (expression.equals("+") || expression.equals("-") || expression.equals("/") || expression.equals("*")) 
         flag = false; 
         break; 
       } 

       if (expression.length() - 1 == i) { 
        if (expression.contentEquals("[a-zA-Z]")) 
         flag = true; 
       } else { 
        flag = false; 
        break; 
       } 

       i++; 
       i++; 
      } 

      if (flag == false) { 
       System.out.println("\nNot Valid\n"); 
      } else { 
       System.out.println("\nValid\n"); 
      }  
     } 
    }