Java 为什么这个方法要调用两次?

Java 为什么这个方法要调用两次?,java,methods,execution,Java,Methods,Execution,我目前正在为我的班级做一个相当简单的项目,但我遇到了这个奇怪的问题。 代码如下: import java.util.Scanner; public class StudentMain { static Scanner kb = new Scanner(System.in); public static void main(String[] args) { System.out.println("This program allows you to organize a stud

我目前正在为我的班级做一个相当简单的项目,但我遇到了这个奇怪的问题。 代码如下:

import java.util.Scanner;
public class StudentMain {
static Scanner kb = new Scanner(System.in);

public static void main(String[] args) {




    System.out.println("This program allows you to organize a student's info in a clear, coherent form");
    System.out.println("Press [1] to continue");
    int x = kb.nextInt();
    if (x==1){
        Name();
        ID();

        String IDen = ID();
        String name = Name();


        System.out.println(name);

        System.out.println(IDen);
    }


}

private static String Name(){
    String SName;
    System.out.println("Enter Student name:  ");
    SName = kb.nextLine();

    return SName;
}

private static String ID(){
    String Sid;
    System.out.println("Enter Student I.D:  ");
    Sid = kb.nextLine();

    return Sid;

}
}
我对该计划的意向已在上面的打印声明中列出,但这是我目前最大的担忧。 无论何时运行该程序:我都会在Eclipse中使用它获得以下结果:

This program allows you to organize a student's info in a clear, coherent form
Press [1] to continue
1
Enter Student name:  
Enter Student I.D:  
John
Enter Student I.D:  
1034172
Enter Student name:  
John
John
1034172

如您所见,我使用了John和1034172作为示例,但它会执行两次这两个返回方法。对此有什么见解吗?欢迎所有回复,并深表感谢。谢谢

因为第一个方法调用的结果是两次调用,所以不需要这些方法调用

    Name();//<-------------(1)
    ID();//<-------------(1)
    //You can remove these lines

    String IDen = ID();//<-------------(2)
    String name = Name();//<-------------(2)

花一点时间学习已接受的。注意:在x=kb.nextLine;之后,可能需要添加kb.nextLine;。原因是nextInt将从键盘获取一个整数,但不会吃整数后面的换行符。然后,当Name调用kb.nextLine时,它将返回当前行上剩余的任何内容,这是一个空字符串,因为第一行上的换行符尚未使用。因此,按照您的建议,我将自动调用return方法并将其分配给variable?另外,这是只针对返回方法还是也可以针对void方法?对不起,我对Java很陌生。@AnotherNewbie是的,IDen=ID;调用该方法。身份证件[本身]调用该方法并丢弃ID返回的值。当调用void方法a=voidMethod时,不能分配任何内容;是非法的,并且void方法不能有返回值的返回。
Name();//First Call
String name =Name();//Second Call