1、Scanner是SDK1.5新增的一个类,可是使用该类创建一个对象.Scanner reader=new Scanner(System.in) 然后reader对象调用下列方法(函数),读取用户在命令行输入的各种数据类型next.Byte(),nextDouble(),nextFloat,nextInt(),nextLine(),nextLong(),nextShot()
上述方法执行时都会造成堵塞,等待用户在命令行输入数据回车确认。例如,拥护在键盘输入12.34,hasNextFloat()的值是true,而hasNextInt()的值是false. NextLine()等待用户输入一个文本行并且回车,该方法得到一个String类型的数据;
2、下面是一个实例:
import java.util.*
public class Example
{
public static void main(String args[])
{
System.out.println("请输入若干个数,每输入一个数用回车确认")
System.out.println("最后输入一个非数字结束输入 *** 作")
Scanner reader=new Scanner(System.in)
double sum=0
int m=0
while(reader.hasNextDouble())
{
double x=reader.nextDouble()
m=m+1
sum=sum+x
}
System.out.printf("%d个数的和为%f\n",m,sum)
System.out.printf("%d个数的平均值是%f\n",m,sum/m)
}
}
运行结果:C:\java>java Example请输入若干个数,每输入一个数用回车确认最后输入一个非数字结束输入 *** 作34.13445d3个数的和为113.1000003个数的平均值是37.700000
用法:
1、ScannernextInt()只读取数值,剩下"\n"还没有读取,并将cursor放在本行中。
2、next()方法遇见第一个有效字符(非空格,非换行符)时,开始扫描,当遇见第一个分隔符或结束符(空格或换行符)时,结束扫描,获取扫描到的内容,即获得第一个扫描到的不含空格、换行符的单个字符串。
3、nextLine()时,则可以扫描到一行内容并作为一个字符串而被获取到。
4、在每一个next()、nextDouble()、nextFloat()、nextInt()等语句之后加一个nextLine()语句,将被next()去掉的Enter结束符过滤掉。
例如:
1、代码如下:
publicclassNextTest{
publicstaticvoidmain(String[]args){
Strings1,s2
Scannersc=newScanner(System.in)
System.out.print("请输入第一个字符串:")
s1=sc.next()
sc.nextLine()
System.out.print("请输入第二个字符串:")
s2=sc.nextLine()
System.out.println("输入的字符串是:"+s1+""+s2)
}
}
2、运行结果:
请输入第一个字符串:home
请输入第二个字符串:work
输入的字符串是:homework
扩展资料:
Scanner使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白匹配。然后可以使用不同的next方法将得到的标记转换为不同类型的值。
例如:
1、以下代码使用户能够从System.in中读取一个数:
Scannersc=newScanner(System.in)
inti=sc.nextInt()
2、以下代码使long类型可以通过myNumbers文件中的项分配:
Scannersc=newScanner(newFile("myNumbers"))
while(sc.hasNextLong()){
longaLong=sc.nextLong()
}
参考资料来源:百度百科—Scanner
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)