Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 字符串和int的扫描器_Java - Fatal编程技术网

Java 字符串和int的扫描器

Java 字符串和int的扫描器,java,Java,代码如下: 导入java.util.Scanner 公开课预科1{ public static void main(String[] args) { int programcase = 0; Scanner inputscan = new Scanner(System.in); System.out.print("Enter case number: "); programcase = inputscan.nextInt(); switch(progr

代码如下:

导入java.util.Scanner

公开课预科1{

public static void main(String[] args)
{
    int programcase = 0;
    Scanner inputscan = new Scanner(System.in);

    System.out.print("Enter case number: ");
    programcase = inputscan.nextInt();

    switch(programcase)
    {
    case 1:
        {
            ////////////////////////////////////////////////////////////////////////////////////

            //WRITE THE CODE OF CASE 1 HERE
            Scanner scan = new Scanner(System.in);

            System.out.println("Enter first student's name: ");
            String name1 = scan.nextLine(); 
            System.out.println("Enter " + name1 + "'s first grade: ");
            int firstGrade = scan.nextInt();
            System.out.println("Enter " + name1 + "'s second lab grade: ");
            int secondGrade = scan.nextInt();
            System.out.println("Enter " + name1 + "'s third lab grade: ");
            int thirdGrade = scan.nextInt();
            System.out.println("Enter " + name1 + "'s fourth lab grade: ");
            int fourthGrade = scan.nextInt();

            System.out.println("Enter second student's name: ");
            int name2 = scan.nextInt();
            System.out.println("Enter " + name2 + "'s first lab grade: ");
            int secondfirstGrade = scan.nextInt();
            System.out.println("Enter " + name2 + "'s second lab grade: ");
            int secondsecondGrade = scan.nextInt();
            System.out.println("Enter " + name2 + "'s third lab grade: ");
            int secondthirdGrade = scan.nextInt();
            System.out.println("Enter " + name2 + "'s fourth lab grade: ");
            int secondfourthGrade = scan.nextInt();

            System.out.println("/+CENG 111 Course Student List+" + "\\");
            System.out.println("Name\t\t\t/Lab1\t/Lab2\t/Lab3\t/Lab4");
            System.out.println(name1 + "\t\t\t/" + firstGrade + "\t/" + secondGrade + "\t/" + thirdGrade + "\t/" + fourthGrade);
            System.out.println(name2 + "\t\t\t/" + secondfirstGrade + "\t/" + secondsecondGrade + "\t/" + secondthirdGrade + "\t/" + secondfourthGrade);

            scan.close();
它继续运行,但并不重要。当我运行它时,它运行得很好,但在那里它说: 输入第二个学生的姓名: 进入二年级学生实验室:


因此,它不必等待我写下名称,而是跳转到另一个问题。我如何解决这个问题?

这是Scanner类的错误行为。它无法正确清除其缓冲区,并希望所有输入都是相同的数据类型

要解决此问题,请改用BufferedReader

BufferedReader x = new BufferedReader (new InputStreamReader (System.in));

int a = Integer.parseInt (x.readLine());

String n = x.readLine();

“这是Scanner类的一个错误行为。”不,不是。你的答案根本错误。“它无法正确清除其缓冲区”它能够做到这一点,但前提是你能够正确使用这个类。阅读JavaDoc(可能还有一些教程)应该会对你有所帮助。