使用Scanner取得输入

在命令行模式下要输入数据至程序中时,可以使用标准输入串对象System.in。然而实际上很少直接使用它,因为System.in对象所提供的read()方法,是从输入串中取得一个字节的数据,并返回该字节的整数值,但通常您要取得的输入会使一个字符串,或是一组数字。所以,System.in对象的read()方法一次只读入一个字节数据的方式并不适用。


在J2SE 5.0中,可以使用java.util.Scanner类取得使用者的输入,java.util指的是包(Package)层级,java.util.Scanner表示Scanner这个类位于java/util这个层级之下。

import java.util.Scanner;

public class ScannerDemo{
	public static void main(String[] args){
		Scanner scanner = new Scanner(System.in);
		System.out.print("请输入您的名字:");	
		System.out.printf("哈喽!! %s!\n",scanner.next());	
	}	
}
java.util包是J2SE 5.0的保准包,使用import是在告诉编译器,您将使用java.util下的Scanner类。

new关键字表示要新增一个Scanner对象,在新增一个Scanner对象时需要一个System.in对象,因为实际上还是System.in在取得使用者的输入。可以将Scanner看作是System.in对象的支持者,System.in取得使用者输入的内容后,交给Scanner做一些处理。

Scanner的next功能: 取得使用者的输入字符串。

nextInt(): 取得使用者输入的数字。

import java.util.Scanner;

public class ScannerDemo2{
	public static void main(String[] args){
		Scanner scanner = new Scanner(System.in);
		System.out.print("请输入一个数字:");	
		System.out.printf("您输入了 %d !\n",scanner.nextInt());	
	}	
}
nextInt()会将取得的字符串转换为int类型的整数,类似的还有Scanner的nextFloat(),nextBoolean()等方法来取得使用者的输入,并转换为正确的数据类型。


使用BufferReader取得输入:

Scanner取得输入依据是空格符,按下空格键,Tab键或是Enter键,Scanner就会返回下一个输入,所以有时并不适用。因为使用者可能输入一个字符串,中间会包括空格符,而您希望取得完整的字符串。如果想要取得包括空格符的输入,比较简单的方法是使用java.io.BufferedReader类来取得输入

使用BufferedReader对象的readLine()方法必须处理java.io.IOException异常(Exception)。异常处理机制是Java为程序设计人员捕捉程序中可能发生的错误所提供的机制。现阶段处理IOException的方法是在main()函数中加上throws IOException


BufferedReader在构建时接受一个java.io.Reader对象,在读取标准输入串时,您可以使用java.io.InputStreadReader,它继承(Inherit)了Reader类。可以使用下面的方法来为标准输入串建立缓冲区对象:

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

BufferReader bufferedReader表示顶一个类型为BufferedReader的参考名称,而new BufferedReader()表示以BufferReader类构建一个对象,new InputStreamReader(System.in)表示接受一个System.in对象来构建一个InputStreanReader对象。


标准输入\ 输出串

标准错误输出串err和out一样也是程序执行后自动开启的,它会将指定的字符串输出至显示设备或其他指定的设备。与标准输出串out不同的是,err会立即显示指定的(错误)信息让使用者知道,即使您指定程序将结构重新定位至文件中,err输出串的信息也不会被重新定位,而仍会显示在指定的显示设备上。

public class ErrDemo{
	public static void main(String[] args){
		System.out.println("使用out输出信息");	
		System.err.println("使用err输出信息");
	}	
}
java ErrDemo > ErrDemoResult.txt
使用err 输出信息打开ErrDemoResult.txt 之后,会发现其中只有文字“使用out 输出信息”,而文字“使用err 输出信息”并没有被定位至文件中,而是直接显示在命令行模式中


break和continue:

continue和作用和break类似,主要用于循环,所不同的是break会结束程序块的执行,而continue只会结束其之后程序块的语句,并跳回循环程序块的开头继续下一个循环,而不是离开循环。例如:

for(int i = 1; i < 10; i++) {
   if(i == 5)
     break;
System.ut.println("i = " + i);
}
这段程序会显示i = 1 到4,因为当 i 等于5 时就会执行break 而离开循环。
再看下面这个程序:
for(int i = 1; i < 10; i++) {
if(i == 5)
continue;
System.out.println("i = " + i);
}
这段程序会显示1 到4,与6 到9。当 i 等于5 时,会执行continue 直接结束此次循环,这次循环中System.out.println()行并没有被执行,然后从程序块开头执行下一次循环,所以5 并没有被显示。





评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值