JAVA基础【3.7】《Java核心技术1》Java的基本程序设计结构-输入输出
来源:互联网 发布:mysql给root设置权限 编辑:程序博客网 时间:2024/06/05 14:45
1 输入
输入主要是Java Scanner 类和Console类
Scanner 类详细可见:http://www.runoob.com/java/java-scanner-class..html
使用 next 方法
import java.util.Scanner;
public class ShuRuShuChu {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
// 从键盘接收数据
//next方式接收字符串
System.out.println("next方式接收:");
// 判断是否还有输入
if(scan.hasNext()){
String str1 = scan.next();
System.out.println("输入的数据为:"+str1);
}
}
}
使用 nextLine 方法:
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
// 从键盘接收数据
//nextLine方式接收字符串
System.out.println("nextLine方式接收:");
// 判断是否还有输入
if(scan.hasNextLine()){
String str2 = scan.nextLine();
System.out.println("输入的数据为:"+str2);
}
}
next() 与 nextLine() 区别
next():
1、一定要读取到有效字符后才可以结束输入。
2、对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。
3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
next() 不能得到带有空格的字符串。
nextLine():
1、以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。
2、可以获得空白。
如果要输入 int 或 float 类型的数据,在 Scanner 类中也有支持,但是在输入之前最好先使用 hasNextXxx() 方法进行验证,再使用 nextXxx() 来读取:
import java.util.Scanner;
public class ScannerDemo {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
// 从键盘接收数据
int i = 0 ;
float f = 0.0f ;
System.out.print("输入整数:");
if(scan.hasNextInt()){
// 判断输入的是否是整数
i = scan.nextInt() ;
// 接收整数
System.out.println("整数数据:" + i) ;
}else{
// 输入错误的信息
System.out.println("输入的不是整数!") ;
}
System.out.print("输入小数:");
if(scan.hasNextFloat()){
// 判断输入的是否是小数
f = scan.nextFloat() ;
// 接收小数
System.out.println("小数数据:" + f) ;
}else{
// 输入错误的信息
System.out.println("输入的不是小数!") ;
}
}
}
执行以上程序输出结果为:
$ javac ScannerDemo.java$ java ScannerDemo输入整数:12整数数据:12输入小数:1.2小数数据:1.2
以下实例我们可以输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果:
import java.util.Scanner;
class ScannerDemo
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
double sum = 0;
int m = 0;
while(scan.hasNextDouble())
{
double x = scan.nextDouble();
m = m + 1;
sum = sum + x;
}
System.out.println(m+"个数的和为"+sum);
System.out.println(m+"个数的平均值是"+(sum/m));
}
}
执行以上程序输出结果为:
$ javac ScannerDemo.java$ java ScannerDemo12231521.4end4个数的和为71.44个数的平均值是17.85
Console类
Java.io.Console类:JDK6中新增了Java Console类的功能,专用来访问基于字符的控制台设备。如果你的Java程序要与Windows下的cmd或者Linux下的Terminal交互,就可以用这个Java Console类代劳;
public static void main(String[] args) {
Console console = System.console(); // 获得Console实例对象
if (console != null) { // 判断是否有控制台的使用权
String user = new String(console.readLine("Enter username:")); // 读取整行字符
String pwd = new String(console.readPassword("Enter passowrd:")); // 读取密码,输入时不显示
console.printf("Username is: " + user + "\n"); // 显示用户名
console.printf("Password is: " + pwd + "\n"); // 显示密码
} else {
System.out.println("Console is unavailable."); // 提示无控制台使用权限
}
}
a 在使用 IDE 的情况下,是无法获取到Console实例的,原因在于在 IDE 的环境下,重新定向了标准输入和输出流,也是就是将系统控制台上的输入输出重定向到了 IDE 的控制台中;
b 我们不总是能得到可用的Console, 一个JVM是否有可用的Console依赖于底层平台和JVM如何被调用;
c 如果JVM是在交互式命令行(比如Windows的cmd)中启动的,并且输入输出没有重定向到另外的地方,那么就可以得到一个可用的Console实例。
java.lang.System.in 类
public static void main(String[] args) {
String str = readDataFromConsole("Please input string:");
System.out.println("The information from console:" + str);
}
private static String readDataFromConsole(String prompt) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = null;
try {
System.out.print(prompt);
str = br.readLine();
}catch (IOException e) {
e.printStackTrace();
}
return str;
}
Please input string:nihao nihao
The information from console:nihao nihao
文件输入与输出
public static void main(String[] args) {
try {
Scanner scan = new Scanner(new File("D:\\Workspaces\\Test\\test.txt"));
if (scan.hasNextLine()) {
String str1 = scan.nextLine();
System.out.println("输入的数据为:" + str1);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
只能读取一行数据。
文件输入
public static void main(String[] args) {
try {
PrintWriter out = new PrintWriter("D:\\Workspaces\\Test\\test1.txt");
out.print("你好");
out.close();
Scanner scan = new Scanner(new File("D:\\Workspaces\\Test\\test1.txt"));
if (scan.hasNextLine()) {
String str1 = scan.nextLine();
System.out.println("输入的数据为:" + str1);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
0 0
- JAVA基础【3.7】《Java核心技术1》Java的基本程序设计结构-输入输出
- JAVA基础【3.2】《Java核心技术1》Java的基本程序设计结构-代码注释
- JAVA基础【3.3】《Java核心技术1》Java的基本程序设计结构-数据类型
- JAVA基础【3.4】《Java核心技术1》Java的基本程序设计结构-变量和常量
- JAVA基础【3.5】《Java核心技术1》Java的基本程序设计结构-运算符【收集】
- JAVA基础【3.6】《Java核心技术1》Java的基本程序设计结构-字符串
- JAVA基础【3.8】《Java核心技术1》Java的基本程序设计结构-控制流程
- JAVA基础【3.9】《Java核心技术1》Java的基本程序设计结构-大数值
- JAVA基础【3.10】《Java核心技术1》Java的基本程序设计结构-数组
- Java核心技术卷1 java的基本程序设计结构笔记
- JAVA基础【3.1】《Java核心技术1》Java的基本程序设计结构-通过“hello world”看mian方法
- Java核心技术学习笔记之一:Java的基本程序设计结构
- 【Java核心技术 I】第三章 Java的基本程序设计结构
- Java核心技术 卷1 读书笔记 (3 Java基本程序设计结构)
- 《java核心技术》读书笔记(二)第三章 java基本的程序设计结构(1)
- Java基本程序设计结构(Java核心技术卷Ⅰ)
- java基础:基本程序设计结构-1
- java核心技术之基本程序设计结构(一)
- cannot execute binary file 的问题
- 系统函数学习
- linux应用编程学习(1)时间类
- 古代文化常识
- linux应用编程学习(2)系统调用文件类
- JAVA基础【3.7】《Java核心技术1》Java的基本程序设计结构-输入输出
- 树莓派开发之路1.11.2
- linux应用编程学习(3)库函数文件类
- eclipse中tomcat自动部署时自动停止问题processWorkerExit(w, completedAbruptly)
- linux应用编程学习(4)多进程编程
- XSCJ数据库样本数据
- MongoDB学习笔记(二)MongoDB常见操作
- make: *** [.tmp_vmlinux1] 错误 1
- linux内核链表学习出错