Статический метод не вызывается - PullRequest
0 голосов
/ 31 декабря 2010

Я пытаюсь вызвать статический метод (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 голос
/ 31 декабря 2010

T_T 1 потребляет введенную строку.In.nextLine () ничего не использует в буфере в T_T 2, поэтому он ожидает ввода.

0 голосов
/ 03 января 2011

Три nextInt в начале программы не употребляют терминатор строки.При первом вызове nextLine он читает входные данные до этого терминатора и возвращает пустую строку.Таким образом, первая printABC также печатает пустую строку.Когда nextLine вызывается во второй раз, он читает следующую строку на входе, как и ожидалось.

Чтобы исправить это, вы можете просто вызвать nextLine дважды в printABC, игнорируя результатпервого вызова, так как он всегда должен быть пустым.

0 голосов
/ 03 января 2011

, поскольку вы вызываете статический метод в другом статическом методе, это не должно вызывать проблем.Проблема должна быть с логикой программы.Пожалуйста, предоставьте более подробную информацию о функциях, которые вы пытаетесь реализовать.

...