Java Scanner Input,没有编译错误,也没有成功输入

时间:2018-07-31 08:16:56

标签: java java.util.scanner

以下代码是一个简单的Java程序,我只是获得学生详细信息的输入,但是该程序不执行任何操作,只是停留在这种状态,没有编译错误或不接受任何输入

import java.util.Scanner;

public class Scannerexample {

public static void main(String[] args) {

Scanner scan = new Scanner(System.in);
int Rollno = scan.nextInt();
String firstname = scan.nextLine();
String lastname = scan.nextLine();
String Department = scan.nextLine();
Boolean Result = scan.hasNext();
char gender = scan.next().charAt(0);

System.out.println("Enter Rollno "+ Rollno);
System.out.println("Enter Firstname "+ firstname);
System.out.println("Enter Lastname "+ lastname);
System.out.println("Enter Department "+ Department);
System.out.println("Enter Result "+ Result);
System.out.println("Enter Gender "+ gender);

scan.close();

}

}

3 个答案:

答案 0 :(得分:2)

每次调用scan.nextSomething等待输入。因此,您编写程序的方式就是等待所有字段的输入,然后打印它们。尝试键入一些字段,然后按Enter键最后查看结果。

您可能想要的东西是这样的:

System.out.println("Enter rollno: ");
int rollno = scan.nextInt();
System.out.println("You entered rollno: "+ rollno);

也有一些Java约定很好,使代码可读:)例如,变量以小写字母开头,类在CamelCase中

答案 1 :(得分:1)

因此,您每次调用代码

scan.nextLine();

程序等待您的输入,直到您按下“ Enter”为止。

因此,如果您想在Input之前写点东西,就必须这样做:

System.out.print("Enter Rollno: ");
int rollno = scan.nextInt();
System.out.print("Enter Firstname: ");
String firstname = scan.next();
// Any more.

请注意,您只使用'print()'而不是'println()',这样您的输入就在同一行上。 还可以使用 scan.next()来仅捕获输入,而不是终端中的完整行。

答案 2 :(得分:0)

请谨慎使用scan.next()或scan.nextLine()

System.out.print("Enter Rollno: ");
    int rollno = scan.nextInt();
    System.out.print("Enter Firstname: ");
    String firstname = scan.next();
    System.out.println(firstname);
    // Any more.
    System.out.print("Enter Lastname: ");
    String lastname = scan.next();
    System.out.println(lastname);

在这种情况下,如果将Firstname输入为:John Doe,则将不允许您输入Lastname,因为它将读取行中的下一个字符串。 scan.next()读取字符串直到“空格”,然后另一个scan.next()将读取下一个字符串直到下一个“空格”。