What's the difference between next() and nextLine() methods from Scanner class?

后端 未结 14 1883
你的背包
你的背包 2020-11-21 05:32

What is the main difference between next() and nextLine()?
My main goal is to read the all text using a Scanner which may be \"con

相关标签:
14条回答
  • 2020-11-21 06:24

    Both functions are used to move to the next Scanner token.

    The difference lies in how the scanner token is generated

    next() generates scanner tokens using delimiter as White Space

    nextLine() generates scanner tokens using delimiter as '\n' (i.e Enter key presses)

    0 讨论(0)
  • 2020-11-21 06:29

    next() and nextLine() methods are associated with Scanner and is used for getting String inputs. Their differences are...

    next() can read the input only till the space. It can't read two words separated by space. Also, next() places the cursor in the same line after reading the input.

    nextLine() reads input including space between the words (that is, it reads till the end of line \n). Once the input is read, nextLine() positions the cursor in the next line.

    import java.util.Scanner;
    
    public class temp
    {
        public static void main(String arg[])
        {
            Scanner sc=new Scanner(System.in);
            System.out.println("enter string for c");
            String c=sc.next();
            System.out.println("c is "+c);
            System.out.println("enter string for d");
            String d=sc.next();
            System.out.println("d is "+d);
        }
    }
    

    Output:

    enter string for c abc def
    c is abc

    enter string for d

    d is def

    If you use nextLine() instead of next() then

    Output:

    enter string for c

    ABC DEF
    c is ABC DEF
    enter string for d

    GHI
    d is GHI

    0 讨论(0)
  • 2020-11-21 06:31

    A scanner breaks its input into tokens using a delimiter pattern, which is by default known the Whitespaces.

    Next() uses to read a single word and when it gets a white space,it stops reading and the cursor back to its original position. NextLine() while this one reads a whole word even when it meets a whitespace.the cursor stops when it finished reading and cursor backs to the end of the line. so u don't need to use a delimeter when you want to read a full word as a sentence.you just need to use NextLine().

     public static void main(String[] args) {
                // TODO code application logic here
               String str;
                Scanner input = new Scanner( System.in );
                str=input.nextLine();
                System.out.println(str);
           }
    
    0 讨论(0)
  • 2020-11-21 06:32
    • Just for another example of Scanner.next() and nextLine() is that like below : nextLine() does not let user type while next() makes Scanner wait and read the input.

       Scanner sc = new Scanner(System.in);
      
       do {
          System.out.println("The values on dice are :");
          for(int i = 0; i < n; i++) {
              System.out.println(ran.nextInt(6) + 1);
          }
          System.out.println("Continue : yes or no");
       } while(sc.next().equals("yes"));
      // while(sc.nextLine().equals("yes"));
      
    0 讨论(0)
  • 2020-11-21 06:34

    I always prefer to read input using nextLine() and then parse the string.

    Using next() will only return what comes before the delimiter (defaults to whitespace). nextLine() automatically moves the scanner down after returning the current line.

    A useful tool for parsing data from nextLine() would be str.split("\\s+").

    String data = scanner.nextLine();
    String[] pieces = data.split("\\s+");
    // Parse the pieces
    

    For more information regarding the Scanner class or String class refer to the following links.

    Scanner: http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html

    String: http://docs.oracle.com/javase/7/docs/api/java/lang/String.html

    0 讨论(0)
  • 2020-11-21 06:37

    From javadocs

    next() Returns the next token if it matches the pattern constructed from the specified string. nextLine() Advances this scanner past the current line and returns the input that was skipped.

    Which one you choose depends which suits your needs best. If it were me reading a whole file I would go for nextLine until I had all the file.

    0 讨论(0)
提交回复
热议问题