2010-12-31 4 views
0

이 클래스에서 정적 메서드 (printABC())를 호출하려고하는데 작동하지 않습니다.정적 메서드가 호출되지 않았습니다.

T_T (1 및 2)로 표시된 줄의 주석을 모두 제거하면 작동합니다! 왜 그 중 하나의 라인에서만 실패합니까?

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

이런 공식적인 질문을 볼 때 무언가가 내면에서 울기를 원합니다. ( –

+1

"작동하지 않는다"는 것은 무엇을 의미합니까? 실제로 무엇을 기대합니까? 실제로 무엇을합니까? 관련성이없는 많은 코드가있는 것 같습니다. 중요한 부분 만 줄일 수 있습니까? –

+1

@Smile : * 어떻게 실패합니까? 여기에 유용한 정보를 제공하지 않으셨습니까? 당신은 무엇을 얻고 있습니까? 대신에 무엇을 얻고 있습니까? – Shog9

답변

1

T_T1은 입력 된 행을 소비합니다. in.nextLine()이 T_T 2의 버퍼에서 소비하기 때문에 입력을 기다리고있는 것이 아닙니다.

0

다른 정적 메서드 내에서 정적 메서드를 호출하기 때문에 문제가 발생하지 않습니다. 문제는 프로그램의 논리에 있어야합니다. 구현하려는 기능에 대한 자세한 내용을 제공해주십시오.

0

프로그램 시작 부분에있는 세 개의 nextInt은 줄 종결자를 먹지 않습니다. 처음으로 nextLine이 호출되면이 터미네이터까지 입력을 읽고 빈 문자열을 반환합니다. 따라서 첫 번째 printABC은 빈 문자열도 인쇄합니다. nextLine이 두 번째로 호출되면 입력에서 다음 줄을 읽습니다.

이 문제를 해결하려면 printABC에서 nextLine을 두 번 호출하고 첫 번째 호출 결과를 무시하십시오. 항상 비어 있어야하므로이 호출을 무시하십시오.

관련 문제