2010-12-31 21 views
0

Ich versuche, eine statische Methode (printABC()) in dieser Klasse aufzurufen, aber es funktioniert nicht.Statische Methode nicht aufgerufen

Wenn ich beide der mit T_T (1 und 2) markierten Zeilen auskommentiere, funktioniert es! Warum scheitert es mit nur einer der Zeilen?

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

Wenn ich solch eine formulierte Frage sehe, möchte etwas tief in mir weinen :( –

+1

Was meinst du mit "es funktioniert nicht"? Was erwartest du es zu tun, und was macht es eigentlich? Es scheint dort eine Menge Code zu sein, der nicht relevant ist. Kannst du es auf nur die wichtigen Teile reduzieren? –

+1

@Smile: * wie * scheitert es? Du gibst uns hier keine nützlichen Informationen zur Verfügung! Sie erwarten, was bekommen Sie stattdessen, was sind Ihre Eingaben ... – Shog9

Antwort

1

T_T 1 belegt die eingegebene Zeile. Es gibt nichts, was die in.nextLine() im Puffer bei T_T 2 verbrauchen würde, also wartet sie auf die Eingabe.

0

Da Sie eine statische Methode innerhalb einer anderen statischen Methode aufrufen, sollte dies kein Problem verursachen. Das Problem sollte mit der Logik des Programms sein. Bitte geben Sie weitere Details bezüglich der Funktionalität an, die Sie implementieren möchten.

0

Die drei nextInt s am Anfang des Programms essen nicht den Leitungsabschluss. Das erste Mal nextLine wird aufgerufen, liest die Eingabe bis zu diesem Terminator und gibt eine leere Zeichenfolge zurück. So druckt die erste printABC leere Zeichenfolge als auch. Wenn nextLine zum zweiten Mal aufgerufen wird, liest es die nächste Zeile in der Eingabe, was Sie erwarten.

Um dies zu beheben, können Sie einfach nextLine zweimal in printABC anrufen, das Ergebnis des ersten Anrufs ignorieren, da es immer leer sein sollte.

Verwandte Themen