java Scanner 类
Java.util.Scanner是java 5的新特征,可以直接通过Scanner类来获取用户的输入,下面创建Scanner对象的基本语法:
Scanner s =new Scanner(System.in);
接下来通过Scanner类的next()与nextLine()方法获取字符串,在读取时一般需要使用hasNext()和hasNextLine()判断是否还有输入的数据:
使用next()方法:
ScannerDemo.java文件代码
package ScannerImport;
import java.util.Scanner;
public class ScannerDemo {
public static void main(String[] args){
Scanner scanner=new Scanner(System.*in*);
//从键盘接受数据
//next方式接受字符串
System.*out*.print("next方式接收");
//判断是否还有输入
if(scanner.hasNext()){
String str1 =scanner.next();
System.*out*.println("输入的数据为:"+str1);
}
scanner.close();
}
}
执行以上程序,输出结果为
next方式接收
scanner 123
输入的数据为:scanner
进程完成,退出码 0
发现后后面的123字符串并未输出
我们再使用nextLine()方法
package ScannerImport;
import java.util.Scanner;
public class ScannerDemo2 {
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);
}
scan.close();
}
}
执行程序输出结果为
nextLine方式接受:
scanner 123
输入数据为:scanner 123
进程完成,退出码 0
发现 字符串123正常输出
next()与nextLine()的区别
next():
* 1、一定要读取到有效字符后才可以结束输入。
* 2、对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。
* 3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
* next() 不能得到带有空格的字符串。
nextLine():
* 1、以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。
* 2、可以获得空白。
如果要输入int或者float类型的数据,在Scanner类中也有支持,但是在输入之前最好先使用hasNextXxx()方法进行验证,再使用nextXxx()来读取
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("输入的不是小数!");
}
scan.close();
}
}
输出结果为
$ javac ScannerDemo.java
$ java ScannerDemo
输入整数:12
整数数据:12
输入小数:1.2
小数数据:1.2
实例演示
对输入的成绩进行分类,调用写好的分类算法进行输出
将nextXxx()放入while循环之中,便可以多次输入数据和判断分类
package ScannerImport;
import java.util.Scanner;
public class ScoreClassiFY {
public static void main(String[] args){
Scanner sc=new Scanner(System.*in*);
System.*out*.print("输入成绩:");
while(sc.hasNextInt()){//判断数据类型
int a=sc.nextInt();//进行循环接受输入
Classify(a);//把接收到的数值使用方法 a为接受到数值
}
sc.close();
}
public static void Classify(int score) {//score为参数,用来接main函数传过来的参数
if (score <= 100 && score > 90) {
System.*out*.println("you get A");
} else if (score <= 90 && score > 80) {
System.*out*.println("you get B");
} else if (score<=80&&score>70) {
System.*out*.println("you get C");
}else if(score>=60&&score<60){
System.*out*.println("you get D");
}else System.*out*.println("you are not pass");
}
}