Java类库 与用户互动

6.1.1 运行Java程序的参数

Java程序的入口:main()方法的方法签名:

public static void main(String []args)
  • public:为了让java类可以由JVM自由调用这个main()方法,所以使用public修饰符把这个方法暴露出来。
  • static:JVM调用这个主方法时,不会先创建该主类的对象,然后通过对象来调用该主方法,JVM直接通过该类来调用主方法
  • void: 因为主方法被JVM调用,该方法的返回值将返回JVM,这没有任何意义。
    方法调用的规则:谁调用方法,谁负责为形参赋值。
    ArgsTest.java
package code;
public class ArgsTest{
    public static void main(String [] args){
        System.out.println(args.length);
        for(String arg :args){
            System.out.println(arg);
        }
    }
}

0
如果改为如下命令来运行上面的程序,

I:\>java code.ArgsTest java String

如果运行Java程序时在类名后紧跟一个或多个字符串(以空格分开),JVM就会把这些字符串依次赋给args数组元素。

I:\>java code.ArgsTest "java String"

6.1.2 使用Scanner 获取键盘输入

使用Scanner可以获取用户的键盘输入,Scanner是一个基于正则表达式的文本扫描器,它可以从文件,输入流,字符串中解释出基本类型值和字符串值。

  • hasNextXxx():是否还有下一个输入项,Xxx可以是Int、Long等代表基本数据类型的字符串,如果只是判断是否包含下一个字符串,则直接使用hasNext();
  • nextXxx() :获取下一个输入项
    在默认情况下,Scanner使用空白(包括空格、Tab空白、回车)作为多个输入项之间的分隔符。
package code;
import java.util.*;
public class ScannerKeyBoardTest{
    public static void main(String []args){
        Scanner scanner = new Scanner(System.in);
        scanner.useDelimiter("\n");
        while(scanner.hasNext())
            System.out.println("键盘输入的内容是:" + scanner.next());
    }   
}

Scanner的读取操作可能被阻塞来等待信息的输入 ,如果输入源没有结束,Scanner又读不到更多的输入项时,两个方法都会阻塞
为Scanner设置分隔符使用useDelimiter(String pattern)方法即可

package code;
import java.util.*;
public class ScannerLongTest{
    public static void main(String [] args){
        Scanner scanner = new Scanner(System.in);
        while(scanner.hasNextLong())
            System.out.println("键盘输入的内容是:" +scanner.nextLong());
    }
}

上面程序不如ScannerKeyBoardTest程序适应性强,因为ScannerLongTest程序要求键盘输入必须是整数,否则程序将会退出
而且Scanner还能从文件输入,

package code;
import java.io.*;
import java.util.*;
public class ScannerFileTest{
    public static void main(String []args)throws Exception{
        Scanner scanner = new Scanner(new File("ScannerFileTest.java"));
        System.out.println("文件内容如下");
        while(scanner.hasNextLine()){
            System.out.println(scanner.nextLine());
        }
    }
}

文件内容如下
package code;
import java.io.*;
import java.util.*;
public class ScannerFileTest{
public static void main(String []args)throws Exception{
Scanner scanner = new Scanner(new File(“ScannerFileTest.java”));
System.out.println(“文件内容如下”);
while(scanner.hasNextLine()){
System.out.println(scanner.nextLine());
}
}
}

上面程序涉及文件输入,可能引发文件IO异常,所以要声明throws Exception表明main方法不处理任何异常。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值