java Scanner类
之前只知道此类可以用来接收键盘的输入,今天看了李兴华的视频,才知道功能如此之多
先看看System.in
这是一个来自System类中的属性,通过他返回的是一个InputStream,通过这个返回对象的read方法也可以获取从键盘接收的值
package com.cyh.test1;
import java.io.InputStream;
import java.util.Scanner;
public class Demo3{
public static void main(String[] args) throws Exception{
InputStream in = System.in;
byte[] b = new byte[1024];
in.read(b);
System.out.println(new String(b));
}
}
Scanner接收键盘数据
hasNext()系列方法返回布尔值,判断输入的是否满足条件
next()系列函数返回内容
package com.cyh.test1;
import java.io.InputStream;
import java.util.Scanner;
public class Demo3{
public static void main(String[] args) throws Exception{
Scanner scan = new Scanner(System.in);
//有内容的输入
if (scan.hasNext()){
System.out.println(scan.next());
}
//输入的是Double
if (scan.hasNextDouble()){
System.out.println(scan.nextDouble());
}else{
scan.next(); //防止被下面的int读取到,通过next将错误的内容给清空
System.out.println("!Double");
}
//是int
if (scan.hasNextInt()){
System.out.println(scan.nextInt());
}else{
System.out.println("!Int");
}
}
}
读取文件的数据
package com.cyh.test1;
import java.io.*;
import java.util.Scanner;
public class Demo3{
public static void main(String[] args) throws Exception{
File file = new File("c:/aa.txt");
Scanner scan = new Scanner(file);
while (scan.hasNext()){
System.out.println(scan.next());
}
}
}
但是这样默认是以空格和换行条件作为一行数据输出出来的,可以通过
useDelimiter()方法使用规定的字符串进行分割
package com.cyh.test1;
import java.io.*;
import java.util.Scanner;
public class Demo3{
public static void main(String[] args) throws Exception{
File file = new File("c:/aa.txt");
Scanner scan = new Scanner(file);
scan.useDelimiter("\n");
while (scan.hasNext()){
System.out.println(scan.next());
}
}
}
一行一行的读取文件
package com.cyh.test1;
import java.io.*;
import java.util.Scanner;
public class Demo3{
public static void main(String[] args) throws Exception{
File file = new File("c:/aa.txt");
Scanner scan = new Scanner(file);
while (scan.hasNextLine()){
System.out.println(scan.nextLine());
}
}
}
还没有评论,来说两句吧...