2010-12-31 7 views
0

J'essaie d'appeler une méthode statique (printABC()) dans cette classe mais cela ne fonctionne pas.Méthode statique non appelée

Si je ne commente pas les deux lignes marquées T_T (1 et 2), cela fonctionne! Pourquoi échoue-t-il avec seulement une des lignes?

import java.util.Scanner; 

class pro0009 { 
    static Scanner in = new Scanner(System.in); 
    static int A,B,C; 

    static void printABC(){ 
     String ABC = in.nextLine(); 

     ABC=ABC.replace("A"," "+A+" "); 
     ABC=ABC.replace("B"," "+B+" "); 
     ABC=ABC.replace("C"," "+C+" "); 

     //System.out.print(ABC.substring(1)); 
     System.out.print(ABC); 
    } 

    public static void main(String[] args){ 
     int x = in.nextInt(); //1 
     int y = in.nextInt(); //2 
     int z = in.nextInt(); //3 


     if(x<y){//1<2 
     if(x<z){ //1<3 
      if(y<z){//x<y<z 2<3 
       //1<2<3 
       A=x; 
       B=y; 
       C=z; 
       printABC();//T_T 1 
       System.out.println("Here"); 
       //pro0009.printABC();//T_T 2 
       //System.out.println("Here2"); 
      }else{ //x<z<y 
       A=x; 
       B=z; 
       C=y; 

      } 
     }else{//z<x<y 
      A=z; 
      B=x; 
      C=y; 

     } 
     }else{//y<x 
     if(y<z){ 
      if(x<z){//y<x<z 
       A=y; 
       B=x; 
       C=z; 

      }else{//y<z<x 
       A=y; 
       B=z; 
       C=x; 

      } 
     }else{//z<y<x 
      A=z; 
      B=y; 
      C=x; 

     } 
     } 
    } 

} 
+3

Quand je vois une telle question formulée, quelque chose veut pleurer au plus profond de moi :( –

+1

Qu'entendez-vous par «ça ne marche pas»? Que voulez-vous qu'il fasse, et que fait-il réellement? Il semble y avoir beaucoup de code qui n'est pas pertinent.Pouvez-vous le réduire aux parties importantes? –

+1

@Smile: * comment * échoue-t-il? Vous ne nous fournissez aucune information utile ici! vous attendez, qu'est-ce que vous obtenez à la place, quelles sont vos entrées ... – Shog9

Répondre

1

T_T 1 consomme la ligne entrée. Il n'y a rien pour in.nextLine() à consommer dans le tampon à T_T 2, donc il attend l'entrée.

0

puisque vous appelez une méthode statique dans une autre méthode statique, cela ne devrait pas causer de problème. Le problème devrait être avec la logique du programme. Veuillez fournir plus de détails concernant les fonctionnalités que vous essayez de mettre en œuvre.

0

Les trois nextInt au début du programme ne mangent pas la terminaison de ligne. La première fois nextLine est appelée, il lit l'entrée jusqu'à ce terminateur et renvoie la chaîne vide. Ainsi, la première printABC imprime également une chaîne vide. Lorsque nextLine est appelé pour la deuxième fois, il lit la ligne suivante dans l'entrée, ce qui est ce que vous attendez.

Pour résoudre ce problème, vous pouvez simplement appeler nextLine deux fois en printABC, en ignorant le résultat du premier appel, car il devrait toujours être vide.

Questions connexes