扫描程序在循环Java中跳过第一个输入

时间:2015-06-30 16:42:55

标签: java loops

这是一个基本的名称排序程序。除了用户无法输入名字这一事实外,一切正常。这是代码:

public static void main(String args[]){
    Scanner sc = new Scanner(System.in);
    System.out.println("How many names do you want to sort");
    int num = sc.nextInt();
    String[] names = new String[num];
    for (int x = 0; x < names.length; x++){
        int pos = x+1;
        System.out.println("Enter name " + pos);
        //String temp = sc.nextLine();
        names[x] = sc.nextLine();
    }
    String sortedArray[] = sort(names);
    for (int i = 0; i < sortedArray.length; i++){
        System.out.print(sortedArray[i] + " ");
    }
}   

更新:我更改了代码,所以如果是第一次,它会调用sc.nextLine(),然后将输入设置为等于[0] .next()的一个问题是,如果一个人的名字是2个单词,则将其视为两个名字。这是有效的更新代码:

public static void main(String args[]) {
    Scanner sc = new Scanner(System.in);
    System.out.println("How many names do you want to sort");
    int num = sc.nextInt();
    String[] names = new String[num];
    //String[] temp = new String[names.length];
    for (int x = 0; x < names.length; x++) {
        int pos = x + 1;
        if (x == 0) {
            System.out.println("Enter name 1");
            sc.nextLine();
            names[0] = sc.nextLine();
        } else {
            System.out.println("Enter name " + pos);
            //String temp = sc.nextLine();
            names[x] = sc.nextLine();
        }
    }
    String sortedArray[] = sort(names);
    for (int i = 0; i < sortedArray.length; i++) {
        System.out.print(sortedArray[i] + " ");
    }
}

1 个答案:

答案 0 :(得分:1)

使用sc.next();代替sc.nextLine();

  • next()将从输入流中找到并返回下一个完整的标记。
  • nextLine()会使扫描程序超过当前行并返回跳过的输入

另外,请从Scanner#nextLine()查看以下说明。

  

使此扫描程序超过当前行并返回该输入   被跳过了。此方法返回当前行的其余部分,   排除末尾的任何行分隔符。该职位设定为   下一行的开头。

     

由于此方法继续搜索输入以查找a   行分隔符,它可以缓冲搜索该行的所有输入   如果没有行分隔符则跳过。

 Scanner sc = new Scanner(System.in);
    System.out.println("How many names do you want to sort");
    int num = sc.nextInt();
    String[] names = new String[num];
    for (int x = 0; x < names.length; x++){
        int pos = x+1;
        System.out.println("Enter name " + pos);
        //String temp = sc.nextLine();
        names[x] = sc.next();
    }
    /*String sortedArray[] = sort(names);
    for (int i = 0; i < sortedArray.length; i++){
        System.out.print(sortedArray[i] + " ");
    }*/