java控制台next_java读取控制台输入以及next() ,nextLine(), nextInt() 和nextDouble()的比较...
(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()的比较...相关推荐
- java—IO流——读取键盘输入的字母并转换成大写字母输出在控制台上
读取键盘输入的字母,并转换成大写输出在控制台上 import java.io.BufferedInputStream; import java.io.BufferedOutputStream; imp ...
- Java基础:如何读取控制台输入?如何读取字符?
今天,运用字节流读取控制台输入在技术上仍是可行的,但这样做需要用到不被赞成的方法,这种做法不值得推荐.Java 2中读取控制台输入的首选方法是字符流,它使程序容易符合国际标准并且易于维护. 注意:Ja ...
- java 输入人名_Java 读取控制台输入
Java 提供了我们两种读取控制台输入的方法: 一.传统方法 public class ReadConsoleOld { public static void main(String[] args) ...
- Java | Java语言在Eclipse控制台输入的三种方法
写在前面的内容,java控制台输入浅尝辄止即可 >>> 文章目录 三种方法比较一览图 方法一:in/out public static final InputStream in//静 ...
- 如何在Dart中读取控制台输入/ stdin?
如何在Dart中读取控制台输入/ stdin? import 'dart:io';void main(){stdout.write("请输入: ");var name = stdi ...
- Shell——read读取控制台输入和函数
文章目录 一.read读取控制台输入 1.基本语法 2.示例演示 二.系统函数 1.basename 2.dirname 三.自定义函数 1.基本语法 2.经验技巧 3.示例演示 一.read读取控制 ...
- java对键盘输入进行读取_JAVA 读取键盘输入
JAVA 读取键盘输入 第一种方法:System.in.read(); 只能针对一个字符的获取,同时,获取进来的变量的类型只能是char 第二种方法:从控制台接收一个字符串,然后将其打印出来. 在这个 ...
- 初学java---第二课《接收控制台(console)输入的方法》
/**接收控制台(console)输入的方法 [1] import java.util.Scanner; [2] Scanner scan = new Scanner(System.in);int m ...
- java编写某计算器控制台程序_计算器 - 进阶的憨狗 - 博客园
源起 最近在看程杰著作的<大话设计模式>,全书以小菜和大鸟对话的形势,由浅入深的讲解程序的设计思想,影射出一个个设计模式.我之前虽然也使用过一些设计模式,但没有系统的学习.整理.总结,现从 ...
最新文章
- torch.var()、样本方差、母体方差
- Android Stadio 导入Android 源码不停index
- android AudioTrack 播放 正弦波 方波
- libgdx使用android控件,在Android上使用libGDX中的SQLite
- 一个 IT 青年北漂四年的感悟
- (八)mybatis之映射器
- 结构数组-创建结构数组---获取修改结构数组数据-------操作字段
- Elasticsearch 2.3.x 拼音分词 analysis-lc-pinyin
- eoeandroid社区转发
- 数据库性能优化--超详细
- 飞思卡尔MC9S12G64串口发送接收驱动
- 湖南科技学院计算机代码,湖南科技学院计算机与信息科学系.doc
- Android发送edp服务器,Android开发之基于OneNET平台的EDP传输协议的使用
- 阿里云提示ECS实例存在挖矿活动的处理
- C++ #include expects “FILENAME“ or <FILENAME>
- 12306订票候补是个坑_重磅!12306候补购票正式上线,实测你可能连排队的机会都没有!...
- 安装sql server 过程(为了使用SQL Server Management Studio)
- 请按照以下要求设计一个学生类Student,并进行测试,要求如下:
- 探索嵌入式应用框架(EAF)
- 更多丰富内容,请转移至博主的个人博客——SeaDream乄造梦
热门文章
- 如何利用clion编译ros工程,并方便在clion中调试?
- 5篇CVPR 各路大佬显身手 点云分割、姿态估计、物体检测、生成重建
- java中JFrame类中函数addWindowListener(new WindowAdapter)
- Nat. Mach. Intell. | 人工智能的透明度和可重复性
- 其他算法-LSH局部敏感度哈希
- Java文件的状态_java中文件的状态
- envoy实现_微服务之服务治理:Envoy 全局 gRPC 限速服务 lyft/ratelimit 详解
- list对象_list对象,容量自适应的数组式容器
- 服务器崩溃日志 | 误删 OpenSSL 的那点事
- metaSPAdes:新型多功能宏基因组拼接工具