public final class Scanner
调用的JAVA的类库:import java.util.Scanner
提供了一种方法从 InputStream(输入流),文件,字符串本身读取int,long,String,double等类型的数据
1.从InputStream(输入流)中读取键盘输入
Scanner sc = new Scanner(System.in);
if(sc.hasNext())
String Input = sc.next();//回车后不会显示空格或者TAB键后的输入,第一行为空格可以
String Input = sc.nextLine();//回车后将所有输入的字符输出
String Input = sc.nextLine().trim();//去除字符前后空格再输出
sc.next()获取下一次键盘输入,此时还是System.in仍在接受输入,linux中Ctrl+D结束输入
高精度计算:
java.math.BigDecimal
BigDecimal Input = sc.nextBigDecimal();//标记为很大的小数
//接受小数和整数的输入
java.math.BigInteger
BigInteger Input = sc.nextBigInteger();//标记为很大的整数
BigInteger Input = sc.nextBigInteger(int radix);//键盘输入的radix进制的数
//只能输入整数
其中运算符:Input.add(BidDecimal other) //和
Input.subtract(BidDecimal other) //差
Input.multiply(BidDecimal other) //积
Input.divide(BidDecimal other) //商
Input.mod(BidDecimal other) //取余
其他格式:
boolean Input = sc.nextBoolean();//只能输入布尔值(true,false)
byte Input = sc.nextByte();//输入整数范围-128~127
byte Input = sc.nextByte(int radix);//键盘输入的是radix进制的数,转成10进制后范围在byte区间内
例如:
键盘输入102
byte Input = sc.nextByte(8);
System.out.println("Input的大小:" + Input);
输出:Input的大小:66 (1*8^2 + 2*8^0)
double Input = sc.nextDouble();//double类型
float Input = sc.nextFloat();//float类型
int Input = sc.nextInt();//整数
int Input = sc.nextInt(int radix);//radix进制的整数
long和short与int类似;
int Input = sc.radix(); //不需输入即可返回默认基数10
提取字符串前的输出:
Scanner Input = sc.useDelimiter("A");//从键盘中提取字符'A'前的字符存在Input中(包含空格和TAB),没有找到就全部输出
例如:
键盘输入:123ABC
Scanner Input = sc.useDelimiter("A");
System.out.println("Input字符:" + Input.next());
输出:Input字符:123
提取字符串后的输出(局限于知道提取之前的所有字符串):
(1)Scanner skip(Sting pattern);
(2)Scanner skip(Pattern pattern);
Scanner sc = new Scanner("ABC;123");
例子(1):
String Input = (sc.skip("AB")).nextLine(); //AB是截取str前面所有字符串
System.out.println("Input截取后字符:" + Input);
输入:ABC;123
输出:Input截取后字符:C;123
例子(2):
增加类:java.util.regex.Pattern
//知道截取前字符,且前字符数已知,可以用..代替,有几个.就有几个字符
Pattern pattern = Pattern.compile(".B");
String Input = (sc.skip(pattern)).nextLine();
System.out.println("Input截取AB后字符:" + Input);
输入:ABC;123
输出:Input截取AB后字符:C;123
判断字符是否有下一行输入:
sc.hasNext();//boolean类型,检查是否有非空字符
sc.hasNextLine();//boolean
sc.hasNext(string pattern);//boolean类型,检测输入字符串是否为pattern,是则返回true,
否则为false
在输入字符中查找子字符串:
String Input = sc.findInLine(String pattern);
如果键盘输入含有pattern的字符串,则输出pattern字符串,否则输出null
例如:
键盘输入:ABCD EFGH
String Input = cs.findInLine("EF");
System.out.println("Input字符:" + Input);
输出:Input字符:EF
2.从文本文档里面提取对应的字符
java.io.File
java.io.FileNotFoundException
例子:
class Print_Text
{
void Get_Input()throws FileNotFoundException //对其捕获声明抛出
{
File text = new File("/usr/my_first_code/1.txt");
Scanner sc = new Scannner(text);
System.out.println("text:" + sc.next());
System.out.println("text:" + sc.nextLine());
int LineNumber = 1;
while(sc.hasNextLine())
{
String line = sc.nextLine();
System.out.println("行数:" + LineNumber + ",Line:" + line);
LineNumber++;
}
sc.close();
}
}
public class Main
{
public static void main(String []args)
{
Print_Text A = new Print_Text();
A.Get_Input();
}
}
文本1.txt内容:123 456
abc
输出:text:123
text:123 456
行数:1,Line:abc
3.从字符串中获取字符(同在文件中获取)
4. 从控制台读取用户名和密码
Console cons = System.console();
String username = cons.readLine("User name: ");
char[] passwd = cons.readPassword("Password: ");