用Java在在线oj平台上做题时,要求的标准输入一般是“Scanner cin=new Scanner(System.in);”。

    其实还有更有效率的方法:Scanner cin=new Scanner(new BufferedInputStream(System.in))。笔者更常用这种方法,效率更高。但是由于本文主题不在于此,因此不再赘述。

    回到正题,之前就发现nextXXX()(包括next()方法)后面紧跟nextLine()的话,后者不会读取到数据,输出的话为空字符串。这两天做了几个题,又涉及到这个问题了。既然开博了,就把这个问题分析、总结,记录下来,以后忘了的话翻翻博客就记起来了。

    写了一段代码,测试所有的cin.nextXXX()方法。

    代码如下:

  1 import java.math.BigDecimal;
  2 import java.math.BigInteger;
  3 import java.util.Scanner;
  4 
  5 /**
  6  *  测试:1.所有的nextXXX()方法(包括next()),后面直接跟nextLine()读取数据;
  7  *  2.先加一句nextLine(),再用nextLine()读取数据,两者的区别。
  8  *  将每个代码块中间的注释"//cin.nextLine()",去掉"//",即可实现第2种方法。
  9  *  @author Hubert
 10  *
 11  */
 12 public class ScannerTest {
 13 
 14     public static void main(String[] args) {
 15         // TODO Auto-generated method stub
 16     Scanner cin=new Scanner(System.in);
 17     
 18     //测试cin.next()
 19     System.out.println("测试 cin.next()后面紧跟着nextLine()读取数据:");
 20     System.out.println("请输入一个字符串:");
 21     String next=cin.next();
 22     //cin.nextLine();
 23     System.out.println("请输入一个字符串:");
 24     String nextLine1=cin.nextLine();
 25     System.out.println("next()方法读取的值为:"+next);
 26     System.out.println("nextLine()方法读取的值为:"+nextLine1+"\n");
 27     
 28     //测试cin.nextInt()
 29     System.out.println("测试cin.nextInt()后面紧跟着nextLine()读取数据:");
 30     System.out.println("请输入一个整数:");
 31     int nextInt=cin.nextInt();
 32     //cin.nextLine();
 33     System.out.println("请输入一个字符串:");
 34     String nextLine2=cin.nextLine();
 35     System.out.println("nextInt()方法读取的值为:"+nextInt);
 36     System.out.println("nextLine()方法读取的值为:"+nextLine2+"\n");
 37     
 38     //测试cin.nextDouble()
 39     System.out.println("测试cin.nextDouble()后面紧跟着nextLine()读取数据:");
 40     System.out.println("请输入一个小数:");
 41     double nextDouble=cin.nextDouble();
 42     //cin.nextLine();
 43     System.out.println("请输入一个字符串:");
 44     String nextLine3=cin.nextLine();
 45     System.out.println("nextDouble()方法读取的值为:"+nextDouble);
 46     System.out.println("nextLine()方法读取的值为:"+nextLine3+"\n");
 47     
 48     //测试cin.nextFloat()
 49     System.out.println("测试cin.nextFloat()后面紧跟着nextLine()读取数据:");
 50     System.out.println("请输入一个小数:");
 51     float nextFloat=cin.nextFloat();
 52     //cin.nextLine();
 53     System.out.println("请输入一个字符串:");
 54     String nextLine4=cin.nextLine();
 55     System.out.println("nextFloat()方法读取的值为:"+nextFloat);
 56     System.out.println("nextLine()方法读取的值为:"+nextLine4+"\n");
 57     
 58     //测试cin.nextBoolean()
 59     System.out.println("测试cin.nextBoolean()后面紧跟着nextLine()读取数据:");
 60     System.out.println("请输入一个布尔值(true或者false):");
 61     boolean nextBoolean=cin.nextBoolean();
 62     //cin.nextLine();
 63     System.out.println("请输入一个字符串:");
 64     String nextLine5=cin.nextLine();
 65     System.out.println("nextBoolean()方法读取的值为:"+nextBoolean);
 66     System.out.println("nextLine()方法读取的值为:"+nextLine5+"\n");
 67     
 68     //测试cin.nextLong()
 69     System.out.println("测试cin.nextLong()后面紧跟着nextLine()读取数据:");
 70     System.out.println("请输入一个整数:");
 71     long nextLong=cin.nextLong();
 72     //cin.nextLine();
 73     System.out.println("请输入一个字符串:");
 74     String nextLine6=cin.nextLine();
 75     System.out.println("nextLong()方法读取的值为:"+nextLong);
 76     System.out.println("nextLine()方法读取的值为:"+nextLine6+"\n");
 77     
 78     //测试cin.nextByte()
 79     System.out.println("测试cin.nextByte()后面紧跟着nextLine()读取数据:");
 80     System.out.println("请输入一个整数(-128~127):");
 81     byte nextByte=cin.nextByte();
 82     //cin.nextLine();
 83     System.out.println("请输入一个字符串:");
 84     String nextLine7=cin.nextLine();
 85     System.out.println("nextByte()方法读取的值为:"+nextByte);
 86     System.out.println("nextLine()方法读取的值为:"+nextLine7+"\n");
 87     
 88     //测试cin.nextShort()
 89     System.out.println("测试cin.nextShort()后面紧跟着nextLine()读取数据:");
 90     System.out.println("请输入一个整数:");
 91     short nextShort=cin.nextShort();
 92     //cin.nextLine();
 93     System.out.println("请输入一个字符串:");
 94     String nextLine8=cin.nextLine();
 95     System.out.println("nextShort()方法读取的值为:"+nextShort);
 96     System.out.println("nextLine()方法读取的值为:"+nextLine8+"\n");
 97     
 98     //测试cin.nextBigInteger()
 99     System.out.println("测试cin.nextBigInteger()后面紧跟着nextLine()读取数据:");
100     System.out.println("请输入一个整数:");
101     BigInteger nextBigInteger=cin.nextBigInteger();//扫描下一个输入作为BigInteger(可以实现任意大的大数)
102     //cin.nextLine();
103     System.out.println("请输入一个字符串:");
104     String nextLine9=cin.nextLine();
105     System.out.println("nextBigInteger()方法读取的值为::"+nextBigInteger);
106     System.out.println("nextLine()方法读取的值为:"+nextLine9+"\n");
107     
108     //测试cin.nextBigDecimal()
109     System.out.println("测试cin.nextBigDecimal()后面紧跟着nextLine()读取数据:");
110     System.out.println("请输入一个小数:");
111     BigDecimal nextBigDecimal=cin.nextBigDecimal();//扫描下一个输入作为BigDecimal(可以实现任意精度)
112     //cin.nextLine();
113     System.out.println("请输入一个字符串:");
114     String nextLine10=cin.nextLine();
115     System.out.println("nextBigDecimal()方法读取的值为:"+nextBigDecimal);
116     System.out.println("nextLine()方法读取的值为:"+nextLine10+"\n");
117     
118     cin.close();
119     } 
120 }
ScannerTest

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-11-30
  • 2022-12-23
  • 2022-12-23
  • 2021-07-06
  • 2021-11-30
  • 2022-12-23
猜你喜欢
  • 2021-07-08
  • 2022-12-23
  • 2022-12-23
  • 2021-07-22
  • 2022-12-23
  • 2022-12-23
  • 2022-01-21
相关资源
相似解决方案