`

Problem when the method next and the nextLine used at the same time

    博客分类:
  • JAVA
阅读更多

 

Introduction

         Problem will appear when the method——next and the nextLine used at the same time in the java source.

 

               What is the next() and the nextLine() ?

Chinese key words

这里讨论的是关于java scanner类中的next方法和nextLine方法.

Problem

Firstly, let us see the code as follows——a simple example of input/output use method next only.

 

package cn.nileader.app.vi;
 import java.util.Scanner;
 public class Test {
     public static void main(String[] args) throws Exception{
         Scanner cin = new Scanner(System.in);
         String  ni = cin.nextLine();
             System.out.print("用Scanner类的next()方法接收了你刚刚输入的字符串是:"+ni+"  长度是"+ni.length());
         ni = cin.nextLine();
         System.out.print("用Scanner类的next()方法接收了你刚刚输入的字符串是:"+ni+"  长度是"+ni.length());
     }
 }

 

 Then,nextLine():

 

package cn.nileader.app.vi;
import java.util.Scanner;
 public class Test {
     public static void main(String[] args) throws Exception{
        Scanner cin = new Scanner(System.in);
         String  ni = cin.next();
            System.out.print("用Scanner类的next()方法接收了你刚刚输入的字符串是:"+ni+"  长度是"+ni.length());
        ni = cin.next();
         System.out.print("用Scanner类的next()方法接收了你刚刚输入的字符串是:"+ni+"  长度是"+ni.length());
     }
 }

 

The codes above-mentioned are right but silly.But,when you run the follow code,you will have a problem.

 

 

package cn.nileader.app.vi;
 import java.util.Scanner;
 public class Test {
     public static void main(String[] args) throws Exception{
         Scanner cin = new Scanner(System.in);
         String  ni = cin.next();
             System.out.println("用Scanner类的next()方法接收了你刚刚输入的字符串是:"+ni+"  长度是"+ni.length());
         ni = cin.nextLine();
         System.out.print("用Scanner类的next()方法接收了你刚刚输入的字符串是:"+ni+"  长度是"+ni.length());
     }
 }

 

Runtime result:

 

    ni掌柜
    用Scanner类的next()方法接收了你刚刚输入的字符串是:ni掌柜  长度是4
    用Scanner类的next()方法接收了你刚刚输入的字符串是:  长度是0

 

      you will find that when you use the next() and the nextLine() at the same time ,you have no chance to input the data which the nextLine() method will scan.

 

Analysis

       To put it simply, differences between next method and the nextLine is that the former scan a continuous character while the nextLine scans all character in one line.

 

      The reason why problem above-mentioned is that the non_responsible of the method next().

 

       As the method work, it scan the line where there is a cursor,but stops when it meet some particular characte,such as space or a line changing sign,and cut the character that has scanned.

 

       

Let’s look into the result above-mentioned, the first method next() have scanned  the character of ‘ni掌柜’, but it has not scanned the character of ‘\n’, what’s more, it has not been responsible for the line changing. For the result, it left the character of ‘\n’ to nextLine() for executing.

        As we know that , “only the money appear  will the method nextLine() open its eye”, so ,nextLine() will stop scanning as soon as it has scanned the character of  ‘\n’ , and there are the characters which in before the ‘/n’ in that line, that isan empty character. Then, problem appears.

 

 

    Solution

 package cn.nileader.app.vi;
  import java.util.Scanner;
 public class Test {
      public static void main(String[] args) throws Exception{
        Scanner cin = new Scanner(System.in);
       String  ni = cin.next();
            System.out.println("用Scanner类的next()方法接收了你刚刚输入的字符串是:"+ni+"  长度是"+ni.length());
       while(  (ni = cin.nextLine()).equals("") ){}
         System.out.print("用Scanner类的next()方法接收了你刚刚输入的字符串是:"+ni+"  长度是"+ni.length());
     }
 }

 

Test result:

        ni掌柜
        用Scanner类的next()方法接收了你刚刚输入的字符串是:ni掌柜  长度是4
        是个天才
        用Scanner类的next()方法接收了你刚刚输入的字符串是:是个天才  长度是4

 

just use the program “while(  (ni = cin.nextLine()).equals("") ){}” to replace the “ cin.nextLine()

 

1
0
分享到:
评论

相关推荐

    解析Scanner之next与nextLine区别

    标题:“解析Scanner之next与nextLine区别” 描述:“介绍next与nextLine如何使用以及它们之间的区别。” 在Java编程语言中,`Scanner`类是处理基本数据类型和字符串的基本输入流的强大工具,它提供了多种方法来...

    next和nextline的区别

    在实际应用中,经常会遇到需要从用户那里获取输入的情况,这时 `Scanner` 类中的 `next()` 和 `nextLine()` 方法就显得尤为重要了。本文将详细介绍这两个方法之间的区别及其应用场景。 ### 一、`Scanner` 类简介 `...

    java中Scanner类nextLine()和next()的区别和使用方法

    Java 中 Scanner 类 nextLine() 和 next() 的区别和使用方法 Java 中的 Scanner 类提供了多种方法来读取输入数据,其中 nextLine() 和 next() 是两个常用的方法,但它们之间有着重要的区别。 next() 方法 next() ...

    浅析java中next与nextLine用法对比

    `next()`和`nextLine()`是`Scanner`类中的两个重要方法,它们在处理用户输入时有着显著的不同。这里我们将深入探讨这两个方法的区别,并通过实例来解析它们的工作原理。 `next()`方法的作用是读取输入流中的下一个...

    Java An Introduction to Problem Solving and Programming

    #### Java An Introduction to Problem Solving and Programming 此标题说明该文件是一本关于Java编程语言的入门书籍,主要侧重于问题解决与编程实践。从标题中可以理解到以下几个关键点: - **Java**: 是一种广泛...

    Python库 | nextline-0.1.0.tar.gz

    本资源是一个名为"nextline-0.1.0"的Python库,以`.tar.gz`格式压缩,这是一种常见的文件打包和压缩方法,通常用于在Unix-like系统或Python等跨平台环境中分发软件。 首先,我们要理解什么是Python库。Python库是一...

    Python库 | nextline_graphql-0.1.0-py3-none-any.whl

    python库。 资源全名:nextline_graphql-0.1.0-py3-none-any.whl

    java_NextDay

    在Java编程语言中,"NextDay"项目可能是一个软件测试作业,旨在教授学生如何使用日期和时间API来处理日期计算,比如找出给定日期之后的一天。在这个作业中,学生通常会被要求创建一个名为`NextDay`的程序,该程序...

    java:An.Introduction.to.Problem.Solving.and.Programming

    本文档是一本名为《Java:An Introduction to Problem Solving and Programming》的Java编程入门书籍,由Walter Savitch编写,第六版出版于2011年。该书旨在教授读者如何通过Java编程解决问题,并且通过一系列编程...

    Scanner类的中的微妙关系

    其中,next()、nextInt()和nextLine()是三种常用的输入方法,它们分别用于获取不同类型的数据,同时也有着微妙的差异和一些使用上的技巧。 next()方法用于读取输入的下一个完整标记(token)。标记是由输入中符合...

    Java Scanner类用法及nextLine()产生的换行符问题实例分析

    下面我们将详细讨论`Scanner`类的用法,特别是`nextInt()`和`nextLine()`方法以及它们之间可能出现的换行符问题。 首先,`Scanner`类的构造函数通常接收一个`InputStream`作为参数,如`System.in`,这使得我们可以...

    Java An Introduction to Problem Solving and Programming (6th Edition)

    - **`nextLine()`陷阱**:揭示使用Scanner类读取用户输入时可能出现的问题。 - **单位换算问题**:提供一个涉及数据类型转换和精度控制的实例。 #### 3. 控制流与条件语句(第3章) - **多分支if-else语句**:介绍...

    3、JavaSE:流程控制-16.pdf

    Java SE中的流程控制是编程中不可或缺的部分,它允许...了解`next()`和`nextLine()`的区别以及如何正确处理数据类型是使用`Scanner`的关键。在实际编程中,我们应始终关注资源管理,确保在使用完毕后及时关闭输入流。

    Java Scanner 类.pdf

    3. `next()`与`nextLine()`的区别: - `next()`:只读取到第一个空格前的字符,不会读取空格,且自动跳过前导空格。 - `nextLine()`:读取到回车符或换行符为止,包括空格,可以获取包含空格的字符串。 4. 使用`...

    3、JavaSE:流程控制.pdf

    接下来,文档中详细介绍了Scanner类中的一些关键方法,包括next()和nextLine(),以及如何使用hasNext()和hasNextLine()方法来进行预检查,判断是否还有更多的输入数据。 next()方法用于读取输入源中的下一个标记...

    在开发过程中常用的一些api

    因此,如果需要同时接收整数和字符串,建议先使用`nextLine()`接收整数的回车,然后再用`nextLine()`接收字符串,或者使用`next()`来读取字符串。 总结来说,`Random`和`Scanner`类是Java开发中常用的API,`Random`...

    java键盘录入 java入门级基本IO

    - `next()`方法会读取直到遇到空格为止,如果需要读取包含空格的字符串,则应使用`nextLine()`方法。 #### 三、使用`BufferedReader`类进行键盘录入 `BufferedReader`类主要用于从文本文件中读取字符,但也可以...

Global site tag (gtag.js) - Google Analytics