java.util.Scanner获取输入的整数,长整型,字符串等:
代码如下/package com.color.program.ball;
import java.util.Scanner;
public class ScannerTest {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
//receive string
String str = s.next();
//receive integer
Integer i = s.nextInt();
//receive double
Double d = s.nextDouble();
System.out.println(str+i+d);
}
}
如用三元运算符判断一个数是奇数还是偶数:
import java.util.Scanner;
public class Ou {
public static void main(String[] args) {
System.out.println("请输入一个整数:");
Scanner reader = new Scanner(System.in);
long a = reader.nextLong();
String str = (a%2 )==0 ? "偶数":"奇数";
System.out.println("结果是:"+str);
}
}
一、扫描控制台输入
这个例子是常常会用到,但是如果没有Scanner,你写写就知道多难受了。
当通过new Scanner(System.in)创建一个Scanner,控制台会一直等待输入,直到敲回车键结束,把所输入的内容传给Scanner,作为扫描对象。如果要获取输入的内容,则只需要调用Scanner的nextLine()方法即可。
先写这里吧,有空再继续完善。
二、如果说Scanner使用简便,不如说Scanner的构造器支持多种方式,构建Scanner的对象很方便。
可以从字符串(Readable)、输入流、文件等等来直接构建Scanner对象,有了Scanner了,就可以逐段(根据正则分隔式)来扫描整个文本,并对扫描后的结果做想要的处理。
package test;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
import java.util.regex.MatchResult;
public class TestScanner {
public static void main(String[] args) throws FileNotFoundException {
// 键盘输入
Scanner sc = new Scanner(System.in);
System.out.println(sc.nextInt());
System.out.println("---------------");
// 文本扫描
Scanner sc2 = new Scanner(new File("D://1.txt"));
while (sc2.hasNextDouble()) {
System.out.println(sc2.nextDouble());
}
System.out.println("---------------");
// 正则解析
String input = "1 fish 2 fish red fish blue fish";
Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*");
System.out.println(s.nextInt());
System.out.println(s.nextInt());
System.out.println(s.next());
System.out.println(s.next());
s.close();
System.out.println("---------------");
// 正则-匹配组
String input2 = "1 fish 2 fish red fish blue fish";
Scanner s2 = new Scanner(input2);
s2.findInLine("(\\d+) fish (\\d+) fish (\\w+) fish (\\w+)");
MatchResult result = s2.match();
for (int i = 1; i <= result.groupCount(); i++)
System.out.println(result.group(i));
s.close();
}
}
以下代码使 long 类型可以通过 myNumbers 文件中的项分配:
三、Scanner默认使用空格作为分割符来分隔文本,但允许你指定新的分隔符(支持正则表达式)
使用默认的空格分隔符:
再来个例子,根据pattern字符串来匹配
代码