Java中的Scanner类学习

转载自:

Java中Scanner的nextInt(),next(),nextLine()方法总结

今天在java上机课时遇到了个小问题,使用Scanner输入数据时,使用了一次nextInt(),一次nextLine(),却只接收了一个整数。代码如下

code1:

 1 package cn.dx;
 2
 3 import java.util.Scanner;
 4
 5 public class ScannerTest {
 6
 7     public static void main(String[] args) {
 8         Scanner in =  new Scanner(System.in);
 9         System.out.println("请输入一个整数");
10         while(in.hasNextInt()){
11             int num = in.nextInt();
12             System.out.println("请输入一个字符串");
13             String str = in.nextLine();
14             System.out.println("num="+num+",str="+str);
15             System.out.println("请输入一个整数");
16         }
17     }
18 }

运行结果为:

请输入一个整数
     1231
     请输入一个字符串
     num=1231,str=
     请输入一个整数

第二个String类型的参数没有读取进来。

自己查看了下nextInt()和nextLine()方法的官方文档

nextLine()

Advances this scanner past the current line and returns the
input that was skipped. This method returns the rest of the current
line, excluding any line separator at the end. The position is set to
the beginning of the next line.

nextInt()方法会读取下一个int型标志的token.但是焦点不会移动到下一行,仍然处在这一行上。当使用nextLine()方法时会读取改
行剩余的所有的内容,包括换行符,然后把焦点移动到下一行的开头。所以这样就无法接收到下一行输入的String类型的变量。

之后改用了next()方法

code2.

 1 package cn.dx;
 2
 3 import java.util.Scanner;
 4
 5 public class ScannerTest {
 6
 7     public static void main(String[] args) {
 8         Scanner in =  new Scanner(System.in);
 9         System.out.println("请输入一个整数");
10         while(in.hasNextInt()){
11             int num = in.nextInt();
12             System.out.println("请输入一个字符串");
13             String str = in.next();
14             System.out.println("num="+num+",str="+str);
15             System.out.println("请输入一个整数");
16         }
17     }
18 }

运行后结果是正确的,运行结果如下。

请输入一个整数
        123
        请输入一个字符串
        sdjakl
        num=123,str=sdjakl

请输入一个整数
        213 jdskals
        请输入一个字符串
        num=213,str=jdskals
        请输入一个整数

试验后发现next()方法是以换行或者空格符为分界线接收下一个String类型变量。

useDelimiter(String regex)方法的使用

时间: 2024-10-14 02:23:09

Java中的Scanner类学习的相关文章

Java中的Scanner类

java.util.Scanner是Java5的新特征,我们可以通过Scanner类来获取用户的输入.创建Scanner对象的基本语法: Scanner s = new Scanner(System.in); 在读取前,一遍需要hasNext和hasNextLine判断是否还有输入的数据.它们的区别为: next(): 1.一定要读取到有效字符后才可以结束输入. 2.对输入有效字符之前遇到的空白,next()方法会自动将其去掉. 3.只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符.

Java中的Scanner类和String类

1:Scanner的使用(了解)    (1)在JDK5以后出现的用于键盘录入数据的类. (2)构造方法: A:讲解了System.in这个东西.            它其实是标准的输入流,对应于键盘录入        B:构造方法            InputStream is = System.in; Scanner(InputStream is)        C:常用的格式            Scanner sc = new Scanner(System.in);    (3)

java中的Optional类学习

Optional实际上是个容器,它是一个装一个对象的容器.这个对象可能是个空,可能是非空. Optional类可以使用来避免NullPointerException,避免频繁的判段对象为null的过程 1.创建Optional对象的方法: (1)Optional.of(xx); 只能装非空对象 (2)Optional.ofNullable(x); 装可以是null的对象 (3)Optional<T> empty() 直接返回一个空箱子对象 2.如何取出Optional容器中的对象 (1)get

Java中的嵌套类和内部类

以前看<Java编程思想>的时候,看到过嵌套类跟内部类的区别,不过后来就把它们的概念给忘了吧.昨天在看<数据结构与算法分析(Java语言版)>的时候,又遇到了这个概念,当时就很大的疑惑:嵌套类跟内部类有什么区别?只有是否有关键字static的区别吗? 所以今天找了个时间查了一下两者的详细区别,总结在这篇博客中,既方便自己的复习和学习,也启示他人吧. 1,概念: 定义在一个类内部的类,叫作"嵌套类".嵌套类分为两种:static的和非static的.后者又有一个专

Java中的 Scanner简述(企业笔试在线编程的输入控制)

摘要: 最近进行企业在线笔试时,发现企业的笔试平台大都使用赛码网(虽然槽点很多),而且在线编程都需要使用Scanner来读取程序的输入,因此,笔者就在先辈们的成果上对Scanner做了一份全新的.详细的总结.我们知道,java.util.Scanner是Java5的新特征,主要功能是简化文本扫描.这个类最实用的地方表现在获取控制台输入,其他的功能都很鸡肋,尽管Java API文档中列举了大量的API方法,但是都不怎么地,特此简述. 版权声明: 本文原创作者:书呆子Rico 作者博客地址:http

Java中的回调函数学习

Java中的回调函数学习 博客分类: J2SE JavaJ# 一般来说分为以下几步: 声明回调函数的统一接口interface A,包含方法callback(); 在调用类caller内将该接口设置为私有成员private A XXX; 在caller内提供实现A接口的public方法(将外部该接口的实现类通过形参传入caller的XXX): caller的某个方法dosth()中会用到XXX.callback()方法; 在caller的实例中,先实现A接口,后调用dosth()方法: 网上流行

java中的 FileWriter类 和 FileReader类

java中的 FileWriter类 和 FileReader类的一些基本用法 1,FileWriter类(字符输出流类) 构造方法:FileWriter fw = new FileWriter(String fileName);//创建字符输出流类对象和已存在的文件相关联.文件不存在的话,并创建. 如:FileWriter fw = new FileWriter("C:\\demo.txt"); FileWriter fw = new FileWriter(String fileNa

使用myeclipse开发java,解决java中继承JFrame类出现The type JFrame is not accessible due to restriction的问题

在java中创建窗体,导入了java中的JFrame类,之后会出现错误: Access restriction: The type QName is not accessible due to restriction on required library D:\myeclipse professer2014 可以解决的办法为: Project—>Properties—>选中Java Build Path—>选择Libraries,出现下面界面: 选中窗口中原有的JRE库,点击Remov

java中的File类

File类 java中的File类其实和文件并没有多大关系,它更像一个对文件路径描述的类.它即可以代表某个路径下的特定文件,也可以用来表示该路径的下的所有文件,所以我们不要被它的表象所迷惑.对文件的真正操作,还得需要I/O流的实现. 1.目录列表 如果我们想查看某个目录下有那些文件和目录,我们可以使用File中提供的list方式来查看,这很像linux下的ls命令. 查看E:/html文件夹下所有的php文件,执行的时候输入的参数为正则表达式 1 package com.dy.xidian; 2