1. 从键盘读取字符, 可以连续不断的输入字段,直到输入exit就退出程序。但此程序存在的问题是:输入字符之间有空格,则空格后面的不会被读取。
5. 接受文件中的数据
可见Scanner读取数据还是很方便的,同时注意分隔符。
private
static
void readLineFromKeyboard() {
while( true){
Scanner scan = new Scanner(System.in); // 从键盘接收数据
String str = scan.next();
if(str.equals( "exit")){
System.exit(0);
}
System.out.println(str);
}
}
while( true){
Scanner scan = new Scanner(System.in); // 从键盘接收数据
String str = scan.next();
if(str.equals( "exit")){
System.exit(0);
}
System.out.println(str);
}
}
2. 由于存在分隔符问题,即输入字符之间存在空格之类,则只能输入前一部分。 使用
useDelimiter方法可以避免这种事情发。
Scanner scan =
new Scanner(System.in) ;
// 从键盘接收数据
System.out.print( "输入数据:") ;
scan.useDelimiter( "\n") ;
String str = scan.next() ; // 接收数据
System.out.println( "输入的数据为:" + str) ;
System.out.print( "输入数据:") ;
scan.useDelimiter( "\n") ;
String str = scan.next() ; // 接收数据
System.out.println( "输入的数据为:" + str) ;
将1和2两种情况结合起来,代码为:
private
static
void readLineFromKeyboard() {
while( true){
Scanner scan = new Scanner(System.in);
System.out.print( "输入数据:") ;
scan.useDelimiter( "\n"); // 忽略\n
String str = scan.next();
if(str.equals( "exit\r")){// 回车换行为\n\r, 则剩下\r
System.exit(0);
}
System.out.println( "输入的数据为:" + str) ;
}
}
while( true){
Scanner scan = new Scanner(System.in);
System.out.print( "输入数据:") ;
scan.useDelimiter( "\n"); // 忽略\n
String str = scan.next();
if(str.equals( "exit\r")){// 回车换行为\n\r, 则剩下\r
System.exit(0);
}
System.out.println( "输入的数据为:" + str) ;
}
}
3. 输入各种数据的例子
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( "输入的不是小数!") ;
}
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( "输入的不是小数!") ;
}
Scanner scan =
new Scanner(System.in) ;
// 从键盘接收数据
String str = null ;
Date date = null ;
System.out.print( "输入日期(yyyy-MM-dd):") ;
if(scan.hasNext( "^\\d{4}-\\d{2}-\\d{2}$")){ // 判断
str = scan.next( "^\\d{4}-\\d{2}-\\d{2}$") ; // 接收
try{
date = new SimpleDateFormat( "yyyy-MM-dd").parse(str) ;
} catch(Exception e){}
} else{
System.out.println( "输入的日期格式错误!") ;
}
System.out.println(date) ;
String str = null ;
Date date = null ;
System.out.print( "输入日期(yyyy-MM-dd):") ;
if(scan.hasNext( "^\\d{4}-\\d{2}-\\d{2}$")){ // 判断
str = scan.next( "^\\d{4}-\\d{2}-\\d{2}$") ; // 接收
try{
date = new SimpleDateFormat( "yyyy-MM-dd").parse(str) ;
} catch(Exception e){}
} else{
System.out.println( "输入的日期格式错误!") ;
}
System.out.println(date) ;
5. 接受文件中的数据
File f =
new File(
"D:" + File.separator +
"test.txt") ;
// 指定操作文件
Scanner scan = null ;
try{
scan = new Scanner(f) ; // 从键盘接收数据
} catch(Exception e){}
StringBuffer str = new StringBuffer() ;
while(scan.hasNext()){
str.append(scan.next()).append('\n') ; // 取数据
}
System.out.println( "文件内容为:" + str) ;
Scanner scan = null ;
try{
scan = new Scanner(f) ; // 从键盘接收数据
} catch(Exception e){}
StringBuffer str = new StringBuffer() ;
while(scan.hasNext()){
str.append(scan.next()).append('\n') ; // 取数据
}
System.out.println( "文件内容为:" + str) ;
可见Scanner读取数据还是很方便的,同时注意分隔符。
本文转自 tianya23 51CTO博客,原文链接:http://blog.51cto.com/tianya23/245094,如需转载请自行联系原作者