Java中Scanner.useDelimiter( )方法使用
在Java语言中,格式化输入是通过类java.util.Scanner来完成的。默认情况下,Scanner是使用“空白”作为分隔符将输入分解为标记,然后使用它所提供的不同的next方法将得到的标记转换为不同的类型的值。
Scanner scan = new Scanner(System.in);
System.out.print("请输入:");
String year = scan.next();
System.out.printf("%s",year);
由于Scanner对象将首先跳过输入流开头的所有空白分隔符,然后对输入流中的信息进行检查,直到遇到空白分隔符为止;因此输入数据:this is a test;空白后面的字符:is a test不会显示输出来。
那如何将含有空格的数据输出呢?
这时就需要用Scanner.useDelimiter( )方法,可以将分隔符号修改为"回车",或者其他字符。
useDelimiter( )方法用法如下
//useDelimiter("\n"); //“\n”换行符(回车)作为输入的分隔符
Scanner scan = new Scanner(System.in).useDelimiter("\n");
System.out.print("请输入:");
String year = scan.next();
System.out.printf("%s",year);
可以用useDelimiter()方法,输入可以一起输入年月日
Scanner scan = new Scanner(System.in).useDelimiter("\\D");// 匹配非数字
System.out.print("请输入当前日期(年-月-日):");
int year = scan.nextInt();
int month = scan.nextInt();
int date = scan.nextInt();
System.out.println(year);
System.out.println(month);
System.out.println(date);
scan.close();
package com.wdzl.demo01;
import java.util.Arrays;
import java.util.Date;
import java.util.Scanner;
/**
* 格式输出
*/
public class TestString {
public static void main(String[] args) {
float str = 345.44556F;
String format = String.format("计算结果为%7.2f", str);
System.out.println(format);
Date date = new Date();
String year = String.format("今年是:%tY", date);
System.out.println(year);
String year1 = String.format("%tY-%tm-%td %tH:%tM:%tS", date, date, date, date, date, date);
System.out.println(year1);
String year2 = String.format("%tF %tT", date,date);
System.out.println(year2);
System.out.println("*****************");
test(args);
// test1();
}
public static void test(String[] args) {
String ss = "语文:90.50分,数学96.5分,英语99.8分";
//方法1
// //分割字符串(分割掉不是数字和点的部分)
// //其中的加号“+”表示匹配数字或“.”以外的字符一次或一次以上
// String[] scores = ss.split("[^0-9.]+");
// System.out.println(Arrays.toString(scores));
// for (String string : scores) {
// System.out.println(string);
// }
//方法2
// Scanner sc = new Scanner(ss).useDelimiter("[^0-9.]+");
Scanner sc = new Scanner(ss);
sc.useDelimiter("[^0-9.]+");
while(sc.hasNext()) {
float score = sc.nextFloat();
System.out.println(score);
}
}
public static void test1() {
Scanner scan = new Scanner(System.in).useDelimiter("\\D");// 匹配非数字
System.out.print("请输入当前日期(年-月-日):");
int year = scan.nextInt();
int month = scan.nextInt();
int date = scan.nextInt();
System.out.println(year);
System.out.println(month);
System.out.println(date);
scan.close();
}
}