输入基本型数据
Scanner scanner = new Scanner(System.in);
①scanner.next(); // next()方法是只读取一个字符串。
②scanner.nextLine(); // nextLine()方法是只读取一行。
③scanner,nextInt(); // 除此之外,nextFloat()方法是只读取一个浮点类型的输入,nextInt()方法是只读取一个整型数值。
上述方法在执行时都会发生阻塞,程序等待用户在命令行输入数据并按Enter键确认。
按顺序举栗子:
1 /* 2 该类是next()方法输入输出测试 3 */ 4 import java.util.Scanner; 5 6 public class ScannerExc{ 7 public static void main(String args[]){ 8 System.out.println("请输入:"); 9 Scanner scanner = new Scanner(System.in);10 String apps = "";11 while(scanner.hasNext()){//最后需要按Ctrl+Z结束输入12 String app = scanner.next();13 apps += app; //拼接字符串不建议这么写14 }15 System.out.println(apps);16 }17 }
next()方法可以获取任意有效字符,返回值得类型是String。
默认情况下,scanner以空格和换行作为分隔符(空格,TAB键,Enter键),所以不会获得带有空格的字符串。
1 /* 2 该类是nextInt()方法输入输出测试 3 */ 4 import java.util.Scanner; 5 6 public class ScannerExc{ 7 public static void main(String args[]){ 8 System.out.println("请输入若干个整型数据:"); 9 Scanner scanner = new Scanner(System.in);10 int app = scanner.nextInt();11 int apps = 0;12 while(app!=0){//最后需要输入0结束输出13 apps += app;//拼接字符串不建议这么写14 app = scanner.nextInt();15 }16 System.out.println("总和是:"+apps);17 }18 }
nextInt(),nextFloat()这类nextXxx()方法可以获得相应的基本类型数据的输入,返回值类型是相应的基本类型。
1 /* 2 该类是nextLine()方法输入输出测试 3 */ 4 import java.util.Scanner; 5 6 public class ScannerExc{ 7 public static void main(String args[]){ 8 System.out.println("请输入:"); 9 Scanner scanner = new Scanner(System.in);10 String apps = "";11 while(scanner.hasNext()){ //最后需要按Ctrl+Z结束输入12 String app = scanner.nextLine();13 apps += app;//拼接字符串不建议这么写14 }15 System.out.println(apps);16 }17 }
nextLine()方法是一行一行读取,可以读取空格和TAB键,返回值的类型是String。
PS:代码中拼接字符串不建议这么写的原因是性能太差。推荐两篇关于字符串拼接方式性能比较的博客:
https://www.cnblogs.com/Faith-zhang/p/6374834.html
https://www.cnblogs.com/wxmdevelop/p/5182286.html
输出基本型数据
System.out.println()或System.out.print()可输出串值、表达式的值,两者的区别是前者输出数据后换行,后者不换行。
该方法允许使用并置符号“+”将变量、表达式或一个常数值与一个字符串并置在一起输出,例如:
System.out.println("总和是"+apps);
需要注意的是,输出字符串常量时,不可以出现“回车”,以下的写法是错误的:
System.out.println("你总是心太软
心太软");
如果字符串长度较长,可以将字符串分解成几部分:
System.out.println("你总是心太软"+
"心太软");
另外,JDK1.5以后新增了和C语言printf函数类似的数据输出方法:
System.out.printf("格式控制部分",表达式1,表达式2);
System.out.printf("%d,%f",12,23.78);
格式控制部分由格式控制符号%d,%c,%f,%s和普通字符组成,普通字符原样输出,格式符号用来输出表达式的值。
- %d:输出int型数据值
- %c:输出char型数据
- %f:输出浮点型数据,小数部分最多保留6位
- %s:输出字符串数据
在输出数据时也可以控制数据在命令行中的位置。
- %md:输出的int型数据占m列
- %m.nf:输出的浮点型数据占m列,小数点保留n位
1 /* 2 该类是printf()方法输入输出测试 3 */ 4 import java.util.Scanner; 5 6 public class ScannerExc{ 7 public static void main(String args[]){ 8 System.out.println("请输入:"); 9 Scanner scanner = new Scanner(System.in);10 String apps = "";11 while(scanner.hasNext()){ //!scanner.hasNext("0")12 String app = scanner.nextLine();13 apps += app;14 }15 System.out.printf("你刚刚输入了%s。",apps);16 }17 }