Java 未调用静态方法

Java 未调用静态方法,java,static-methods,Java,Static Methods,我试图在此类中调用一个静态方法(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();

我试图在此类中调用一个静态方法(
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;

         }
      }
   }

}
import java.util.Scanner;
类别pro0009{
静态扫描仪输入=新扫描仪(系统输入);
静态int A、B、C;
静态void printABC(){
字符串ABC=in.nextLine();
ABC=ABC.替换(“A”,“A+”);
ABC=ABC。替换为(“B”,“B+”);
ABC=ABC。替换为(“C”,“C+”);
//系统输出打印(ABC子字符串(1));
系统输出打印(ABC);
}
公共静态void main(字符串[]args){
int x=in.nextInt();//1
int y=in.nextInt();//2
int z=in.nextInt();//3

如果(xt1)使用输入的行。in.nextLine()没有任何内容在T_T 2消耗缓冲区,因此它正在等待输入。

由于您在另一个静态方法中调用一个静态方法,这应该不会导致问题。问题应该是程序的逻辑。请提供有关您尝试实现的功能的更多详细信息。

三个
nextInt
s在程序开始时,不要使用行终止符。第一次调用
nextLine
时,它会将输入读取到此终止符并返回空字符串。因此第一次
printABC
也会打印空字符串。当第二次调用
nextLine
时,它会读取输入中的下一行,这是您所需要的期待


要解决这个问题,您只需在
printABC
中调用
nextLine
两次,忽略第一次调用的结果,因为第一次调用的结果应该总是空的。

当我看到这样一个公式化的问题时,我内心深处有种想哭的东西:(你说“它不工作”是什么意思?你期望它做什么?它实际上做什么?那里似乎有很多不相关的代码。你能把它简化为重要的部分吗?@Smile:它怎么会失败?你没有给我们提供任何有用的信息!你期望什么输出,你得到什么,你的输入是什么…谢谢!我尝试了o输入1 2 3,但在我的屏幕光标中未调用printABC(),请跳到“此处”
printABC
调用.nextLine
中的
-您会给出什么输入?第一个
1 2 3
将分配给
A
B
C
,但您以后会输入什么?