首页 > 解决方案 > 下一行间距问题

问题描述

我下面的程序会提示用户他们班上有多少孩子。输入号码后,他们将输入学生的所有姓名(名字)和(姓氏)。因此,我输入了一个 scan Next Line 语句,而不仅仅是 scan.next。因此,无论您输入什么数字,程序都会提示您少一个。请帮忙。

 public class studentRoster {

public static void main(String[] args) {

     Scanner scan = new Scanner (System.in);


     String [] students;
     int size;

     System.out.println("Enter the amount of students in your class: ");
     size = scan.nextInt();

     students = new String[size];

     for (int i = 0; i < students.length; i++ ){
            System.out.println("Enter a student name: ");
            students [i] = scan.next();


       }

                 System.out.println("Student Roster");

     for ( int i = 0;  i < students.length; i++ ){
            System.out.println(students[i]);

           }
        }
     }

标签: javaarraysstringjava.util.scanner

解决方案


使用 scan.next() 只能捕获遇到的第一个空格,因此如果用户同时输入名字和姓氏,您将需要使用 .nextLine()。

要使此代码正常工作,scan.nextLine();请在分配size给用户输入后添加。然后,更改students [i] = scan.next();students [i] = scan.nextLine();.

您需要这样做的原因是因为.nextInt()不考虑用户输入的最后一个换行符,因此您需要调用.nextLine()以解决此问题。


public class StudentRoster {

public static void main(String[] args) {

     Scanner scan = new Scanner (System.in);


     String [] students;
     int size;

     System.out.print("Enter the amount of students in your class: ");
     size = scan.nextInt();
     scan.nextLine();
     students = new String[size];

     for (int i = 0; i < students.length; i++ ){
            System.out.print("Enter a student name: ");
            students [i] = scan.nextLine();

       }

                 System.out.println("Student Roster");

     for ( int i = 0;  i < students.length; i++ ){
            System.out.println(students[i]);

           }
        }
     }

测试输出

Enter the amount of students in your class: 4 Enter a student name: john Q Enter a student name: albert E Enter a student name: tyler D Enter a student name: mickey M Student Roster john Q albert E tyler D mickey M


推荐阅读