2015-06-30 97 views
0

这是一个基本名称排序程序。除了用户不能输入名字这一事实以外,一切都有效。这是代码:扫描仪跳过循环中的第一个输入Java

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 ()是,如果一个人的名字是两个单词将其视为两个名字。这是更新的代码工作:

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

使用sc.next();而不是sc.nextLine();

  • next()将查找并从输入流返回下一个完整标记。
  • nextLine()将推动扫描器执行当前行,并返回跳过

而且输入,查看下面的描述从Scanner#nextLine()

将此扫描仪推进到当前行,并返回跳过 的输入。此方法返回当前行的其余部分,排除末尾的任何行分隔符,即 。该位置设置为下一行开头的 。

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

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] + " "); 
    }*/ 
+0

你有你的答案,如果没有的话,请写你的答案,这样其他的可以从中受益。 stackoverflow.com/help/accepted-answer – hagrawal