(1)读取控制台输入

java的控制台输入由System.in完成。

为了得到一个绑定到控制台的字符流,你能够把System.in包装在一个BufferedReader对象中建立一个字符流。html

BufferedReader br = new BufferedReader(new

InputStreamReader(System.in));

实例化BufferedReader类时须要传入一个IO对象。java

BufferedReader对象建立后,咱们即可以使用以下方法:web

用read()方法从控制台读取一个字符;

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

int charASCII = br.read();//这里读取的是输入的字符的ASCII码值

char inputChar = (char) charASCII; //强制类型转换为字符类型

System.out.println(inputChar+":"+charASCII);//打印出输入的字符和其ASCII码值

由于调用了read()方法,因此要抛出IOException,即在包含上述代码的方法外部要throws IOException,即声明IO异常;app

用readLine()方法读取一个字符串;

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

String inputString = br.readLine(); //读取一个从控制台输入的字符串

System.out.println(inputString);

这里也是如此,方法外部也须要声明IO异常(throws IOException);ide

(2)从控制台读取多字符输入

public static void IOTest() throws IOException {

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

int ascii;

char c;

// 定义一个StringBuilder对象用来动态存储输入的字符

StringBuilder str = new StringBuilder();

System.out.println("输入字符,直到按下空格结束:");

while (true){

ascii = br.read(); //这里读取的是输入的字符的ASCII码值,即int类型的值

// 当读取到输入的字符为换行符的时候跳出循环

if (ascii == 10) //换行符的ASCII码值为10

break;

c = (char)ascii;

str.append(c);

}

System.out.println(str);

}

运行结果以下:svg

输入字符,直到按下空格结束:

Believe yourself!

Believe yourself!

(3)从控制台读取多字符串

public static void IOTest() throws IOException{

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

StringBuilder res = new StringBuilder();//用来存储输入的字符行

System.out.println("请输入字符行,直到输入‘end’结束输入:");

String str;

while (true){

str = br.readLine();

if (str.equals("end")) //当输入end的时候,跳出循环

break;

res.append(str);

}

System.out.println(res.toString());

}

运行结果以下:ui

请输入字符行,直到输入‘end’结束输入:

You can fail,

but you can't lose your confidence!

end

You can fail,but you can't lose your confidence!

(4)经过Scanner读取控制台输入

咱们能够经过Scanner类获取用户的输入spa

Scanner scanner = new Scanner(System.in);

经过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前通常须要使用hasNext()与hasNextLine()判断是否还有输入的数据;.net

next()

读取键盘输入的字符串并打印,直到用户输入字符串“end”为止。code

public static void scannerTest(){

Scanner scanner = new Scanner(System.in);//接收键盘上输入的数据

System.out.println("next方式读取数据:");

while (scanner.hasNext()){

//当读取到输入的字符串是“end”,表示输入结束。

String str = scanner.next();

if (str.equals("end"))

break;

System.out.println("输入的数据为:"+str); // (1)

}

scanner.close();//关闭scanner对象

}

运行结果为:

(1)

next方式读取数据:

Hello, how are you ! end

输入的数据为:Hello,

输入的数据为:how

输入的数据为:are

输入的数据为:you

输入的数据为:!

Process finished with exit code 0

(2)

next方式读取数据:

Hello, How are you !

输入的数据为:Hello,

输入的数据为:How

输入的数据为:are

输入的数据为:you

输入的数据为:!

end

Process finished with exit code 0

将(1)处的输出语句改成以下形式,则:

System.out.print(str+" ");

其运行结果以下:

next方式读取数据:

Hello, how are you ! end

Hello, how are you!

Process finished with exit code 0

(1)next()方法默认将空格做为字符串的分隔符,因此不能读取带有空格的字符串。

例如:h ello,这里是分为两个字符串,因此是读取两次,h 一次,ello 一次;

(2)next()方法能够修改默认的字符串分隔符;

// 上面对应的代码改为以下所示

Scanner scanner = new Scanner(System.in);

// 使用userDelimiter("_")将默认的字符串分隔符改成“_”(下划线)

String str = scanner.useDelimiter("_").next();

则运行结果为:

next方式读取数据:

Hello_How_are_you_!_end

Hello How are you !

(3)对输入有效字符以前的空白,next()方法会自动将其去掉;

nextLine()

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 thecursor in the next line.

读取整行的数据包括单词间的空格,到回车结束(也就是从开始读一整行包括回车),读取结束后,光标放在下一行开头。

public static void scannerTest1(){

Scanner scanner = new Scanner(System.in);

System.out.println("nextLine方式读取数据:");

while (scanner.hasNextLine()){

String str = scanner.nextLine();

if (str.equals("end"))

break;

System.out.println("输出的数据为: "+str);

}

scanner.close();

}

运行结果:

nextLine方式读取数据:

Hello, How are you ! end

输出的数据为: Hello, How are you ! end

Nice to meet you! end

输出的数据为: Nice to meet you! end

end

注意: 咱们在输入“Hello,How are you ! end”后并无结束输入,由于nextLine()读取的是输入回车键以前的全部字符,因此这里String str = scanner.nextLine()读取的是“Hello,How are you ! end”,即str = "Hello,How are you ! end",而不是str = "end",因此这里不会终此输入。

而下面的单独一行输入“end”以后, 才结束输入。

(1)以Enter(回车键)为结束符,也就是说nextLine()方法返回的是输入回车以前的全部字符;

(2)能够获取空白(读取空白);

nextInt()

nextInt(): it only reads the int value, nextInt() places the cursor in the same line after reading the input.

只读取整数型数据, nextInt()在读取完输入后把光标放在读取数据的同一行,该数据的后面。

public static void scannerTest2(){

Scanner scanner = new Scanner(System.in);

System.out.println("nextInt方式读取数据:");

while (scanner.hasNextInt()){ //只要输入的数据不是整型数据,立马结束输入的读取

int data = scanner.nextInt();

System.out.println("输出的数据为: "+data);

}

scanner.close();

}

nextInt方式读取数据:

23 89 299 09 78 jksdf

输出的数据为: 23

输出的数据为: 89

输出的数据为: 299

输出的数据为: 9

输出的数据为: 78

Process finished with exit code 0

只要输入的不是整型数据(除分隔符之外),则结束输入。

nextDouble()

与nextInt()方法相似,不一样的是只读取小数(double)类型的数据。

参考:

java控制台next_java读取控制台输入以及next() ,nextLine(), nextInt() 和nextDouble()的比较...相关推荐

  1. java—IO流——读取键盘输入的字母并转换成大写字母输出在控制台上

    读取键盘输入的字母,并转换成大写输出在控制台上 import java.io.BufferedInputStream; import java.io.BufferedOutputStream; imp ...

  2. Java基础:如何读取控制台输入?如何读取字符?

    今天,运用字节流读取控制台输入在技术上仍是可行的,但这样做需要用到不被赞成的方法,这种做法不值得推荐.Java 2中读取控制台输入的首选方法是字符流,它使程序容易符合国际标准并且易于维护. 注意:Ja ...

  3. java 输入人名_Java 读取控制台输入

    Java 提供了我们两种读取控制台输入的方法: 一.传统方法 public class ReadConsoleOld { public static void main(String[] args) ...

  4. Java | Java语言在Eclipse控制台输入的三种方法

    写在前面的内容,java控制台输入浅尝辄止即可 >>> 文章目录 三种方法比较一览图 方法一:in/out public static final InputStream in//静 ...

  5. 如何在Dart中读取控制台输入/ stdin?

    如何在Dart中读取控制台输入/ stdin? import 'dart:io';void main(){stdout.write("请输入: ");var name = stdi ...

  6. Shell——read读取控制台输入和函数

    文章目录 一.read读取控制台输入 1.基本语法 2.示例演示 二.系统函数 1.basename 2.dirname 三.自定义函数 1.基本语法 2.经验技巧 3.示例演示 一.read读取控制 ...

  7. java对键盘输入进行读取_JAVA 读取键盘输入

    JAVA 读取键盘输入 第一种方法:System.in.read(); 只能针对一个字符的获取,同时,获取进来的变量的类型只能是char 第二种方法:从控制台接收一个字符串,然后将其打印出来. 在这个 ...

  8. 初学java---第二课《接收控制台(console)输入的方法》

    /**接收控制台(console)输入的方法 [1] import java.util.Scanner; [2] Scanner scan = new Scanner(System.in);int m ...

  9. java编写某计算器控制台程序_计算器 - 进阶的憨狗 - 博客园

    源起 最近在看程杰著作的<大话设计模式>,全书以小菜和大鸟对话的形势,由浅入深的讲解程序的设计思想,影射出一个个设计模式.我之前虽然也使用过一些设计模式,但没有系统的学习.整理.总结,现从 ...

最新文章

  1. torch.var()、样本方差、母体方差
  2. Android Stadio 导入Android 源码不停index
  3. android AudioTrack 播放 正弦波 方波
  4. libgdx使用android控件,在Android上使用libGDX中的SQLite
  5. 一个 IT 青年北漂四年的感悟
  6. (八)mybatis之映射器
  7. 结构数组-创建结构数组---获取修改结构数组数据-------操作字段
  8. Elasticsearch 2.3.x 拼音分词 analysis-lc-pinyin
  9. eoeandroid社区转发
  10. 数据库性能优化--超详细
  11. 飞思卡尔MC9S12G64串口发送接收驱动
  12. 湖南科技学院计算机代码,湖南科技学院计算机与信息科学系.doc
  13. Android发送edp服务器,Android开发之基于OneNET平台的EDP传输协议的使用
  14. 阿里云提示ECS实例存在挖矿活动的处理
  15. C++ #include expects “FILENAME“ or <FILENAME>
  16. 12306订票候补是个坑_重磅!12306候补购票正式上线,实测你可能连排队的机会都没有!...
  17. 安装sql server 过程(为了使用SQL Server Management Studio)
  18. 请按照以下要求设计一个学生类Student,并进行测试,要求如下:
  19. 探索嵌入式应用框架(EAF)
  20. 更多丰富内容,请转移至博主的个人博客——SeaDream乄造梦

热门文章

  1. 如何利用clion编译ros工程,并方便在clion中调试?
  2. 5篇CVPR 各路大佬显身手 点云分割、姿态估计、物体检测、生成重建
  3. java中JFrame类中函数addWindowListener(new WindowAdapter)
  4. Nat. Mach. Intell. | 人工智能的透明度和可重复性
  5. 其他算法-LSH局部敏感度哈希
  6. Java文件的状态_java中文件的状态
  7. envoy实现_微服务之服务治理:Envoy 全局 gRPC 限速服务 lyft/ratelimit 详解
  8. list对象_list对象,容量自适应的数组式容器
  9. 服务器崩溃日志 | 误删 OpenSSL 的那点事
  10. metaSPAdes:新型多功能宏基因组拼接工具