JAVA取得使用者输入的字符串例子

当在文字模式下要输入数据至程序中时,您可以使用标准输入串流对象System.in,然而我们很少直接使用它,因为System.in对象所提供的 read()方法,是从输入串流取得一个位元组的数据,并传回该位元组的整数值。

在文字模式下的输入是以字节的方式传送给程序,所以直接使用read()方法取得的是字节的ASCII编码整数,通常要取得的使用者输入会是一个字符串,或是一组数字,所以 System.in对象的read()方法一次只读入一个位元组数据的方式并不适用。

在 J2SE 5.0 中,您可以使用java.util.Scanner取得使用者的输入。

java.util指的是包(package)层级,java.util.Scanner表示Scanner这个类是位于java/util这样的阶层之下,现阶段您可以将这个阶层想像为类似文件管理的目录(数据夹)阶层。

直接先来看如何取得使用者的输入字符串:

  • UserInput.java
import java.util.Scanner;

public class UserInput {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Please input your name: ");
        System.out.printf("Hello! %s!", scanner.next());
    }
}

执行结果:
Please input your name: caterpillar
Hello! caterpillar!


解释一下程序,java.util包是J2SE 5.0的标准包,编译器会知道到哪去找这个包,您使用"import"是在告诉编译器,您将使用 java.util下的 Scanner类。

"new"表示新增一个 Scanner对象,在新增一个 Scanner对象时需要一个System.in对象,因为实际上还是System.in在取得使用者的输入,您可以将Scanner看作是 System.in对象的支持者,System.in取得使用者输入之后,交给Scanner作一些处理(实际上,这是 Decorator 模式 的一个应用)。

简单的说,您告诉执行环境新增一个Scanner对象,然后使用它的next()方法来取得使用者的输入字符串,如果要取得数字呢?您可以使用 Scanner对象的nextInt()方法,例如:

  • UserInput.java
import java.util.Scanner;

public class UserInput {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Please input a number: ");
        System.out.printf("Oh! I get %d!! mysite:http://www.infocool.net", 
        scanner.nextInt());
    }
}

nextInt()会将试着取得的字符串转换为int整数,看看执行结果:
Please input a number: 100
Oh! I get 100!!


同样的,您还可以使用Scanner的nextFloat()、nextBoolean()等方法来取得使用者的输入,并转换为正确的 数据类型。

要注意的是,Scanner取得输入的依据是空白字节,举凡按下空白键、tab键或是enter键,Scanner就会传回下一个输入,如果您想要取得包括空白字节的输入,比较简单的方法是 使用 BufferedReader 类取得输入。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值