2016-10-05 4 views
0
import java.util.Scanner; 

public class Tester { 

public static void main(String[] args) { 

Scanner input = new Scanner(System.in); 
char c = 'x'; 
Queue q1 = new Queue(); 
Stack s1 = new Stack(); 
s1.push('#'); 
Queue q2 = new Queue(); 
q1.enqueue('#'); 

while (c != '#') { 
    System.out.println("Enter a character: "); 
    c = input.next().charAt(0); 
    q1.enqueue(c); 
}  
while (c != '#') { 
    c = (char) q1.dequeue(); 
    if (!operator(c)) { 
     q2.enqueue(c); 
    } 
} 
q1.print(q1); 
System.out.println(); 
q2.print(q2); 

} 

public static boolean operator(char c) { 
char op = 'x'; 
boolean isOperator; 

switch (op) { 
case '*': 
case '/': 
case '^': 
case '+': 
case '-': 
    isOperator = true; 
    break; 
default: 
    isOperator = false; 
    break; 
} 
return isOperator; 
} 
} 

Le but de c'est pour moi d'entrer des caractères dans la file q1, puis alors que le caractère ISN 't a #, il devrait être retiré de q1 tant que le personnage n'est pas un opérateur et le mettre en file d'attente dans q2. Cependant, aucun de mes opérateurs de q1 n'est retiré et mis en file d'attente dans q2, ce qui devrait se produire à partir des lignes 20-23.Impossible DEQUEUE les opérateurs d'une file d'attente à l'autre en vérifiant si le caractère est un opérateur par une méthode booléenne qui utilise changer

Répondre

0

Votre problème se trouve dans la variable c qui n'est pas réinitialisée avant d'être exécutée la seconde fois.

Si vous sortez la première boucle 'while', c sera défini sur '#' et vous n'irez pas dans la deuxième boucle.

Essayez ceci:

while (c != '#') { 
    System.out.println("Enter a character: "); 
    c = input.next().charAt(0); 
    q1.enqueue(c); 
}  
c = 'a' 
while (c != '#') { 
    c = (char) q1.dequeue(); 
    if (!operator(c)) { 
     q2.enqueue(c); 
    } 
} 
+0

Je ne pense pas que cela aide depuis que j'ENQUEUE un # au début du code. – tbadam

+0

Avez-vous essayé? Vous vérifiez 'c' pas q1 dans la condition! – granmirupa

+0

Oui, il imprime toujours le résultat et tout reste en q1. – tbadam