一、运行Java程序的参数
main()方法的签名:
//java 程序入口 public static void main(String[] args) { ...}
1、public修饰符:为了让JVM可以自由调用这个main()方法
2、static修饰符:让JVM调用这个主方法时,不会创建该类的对象。JVM直接通过类来调用主方法。
3、void返回值:因为主方法被JVM调用,该方法的返回值返回给JVM没有任何意义,因此main()方法没有返回值。
介绍形参列表:
根据方法调用规则,谁调用它,谁为它赋值。即args参数应该由JVM指定。
class ArgsTest
{
public static void main(String[] args)
{
//输出args参数的长度
System.out.println(args.length);
//遍历args的每个数组元素
for(var arg:args)
{
System.out.println(arg);
}
}
}
运行该程序时,我们通过命令窗口来执行:
E:Java第七章 Java基础类库7.1 用户用户互动>javac -d . ArgsTest.java
E:Java第七章 Java基础类库7.1 用户用户互动>java ArgsTest Java good morning!
3
Java
good
morning!
运行Java程序时参数与args数组之间的对应关系为:
如果某参数本身包含空格,则应该使用双引号将它括起来,否则JVM会把这个空格当成分隔符,而不是参数本身。
二、使用Scanner获取键盘输入
使用Scanner类可以很方便地获取用户的键盘输入,Scanner是一个基于正则表达式的文本扫描器,它可以从文件、输入流、字符串中解析除基本类型和字符串型。
Scanner类提供了多个构造器,不同构造器可以接受从文件、输入流、字符串作为数据源,用于从文件、输入流、字符串中解析数据。
导包——>import java.util.Scanner;
Scanner主要提供了两个方法来扫描输入:
(1)hasNextXxx():是否还有下一个输入项,其中Xxx可以是Int、Long等代表数据类型的字符串。如果只是判断是否包含下一个字符串,则可以直接使用hasNext().
(2)nextXxx():获取下一个输入项。Xxx的含义同上。
2.1 从输入流接受数据接受字符串数据类型
默认情况下,Scanner使用空白(包括空格" "、Tab空白" "、回车"
")作为多个输入项之间的分隔符。例如sc.useDelimiter("/n")
例如:
import java.util.Scanner;
class ScannerKyrboardTest
{
public static void main(String[] args)
{
//System.in代表标准输入,就是键盘输入
var sc=new Scanner(System.in);
//只把回车作为分隔符
sc.useDelimiter("
");
//判断是否还有下一个输入项
while(sc.hasNext())
{
System.out.println("键盘输入的内容为:"+sc.next());
}
}
}
good boys and grils!
键盘输入的内容为:good boys and grils!
Thank you very much!
键盘输入的内容为:Thank you very much!
scanner方法逐行读取:
(1)boolean hasNextLine():返回输入源中是否还有下一行
(2)String nextLine():返回输入源中下一行的字符串。
例如下面程序的输入结构和上面相同:
import java.util.Scanner;
class ScannerKyrboardTest1
{
public static void main(String[] args)
{
//System.in代表标准输入,就是键盘输入
var sc=new Scanner(System.in);
//只把回车作为分隔符
sc.useDelimiter("
");
//判断是否还有下一个输入项
while(sc.hasNextLine())
{
System.out.print("键盘输入的内容为:"+sc.nextLine()+"
");
}
}
}
2.2 从输入流中获取基本数据类型
import java.util.Scanner;
public class ScannerDouble
{
public static void main(String[] args)
{
var sc=new Scanner(System.in);
while(sc.hasNextDouble())
{
System.out.println("输入的double类型数据为:"+sc.nextDouble());
}
}
}
123
输入的double类型数据为:123.0
45.5
输入的double类型数据为:45.5
"123"
2.3 从文件流中获取数据
只要在创建Scanner对象中传入一个File对象作为参数,就可以让Scanner读取文件的内容:
import java.util.Scanner;
public class ScannerFileTest
{
public static void main(String[] args)
{
Scanner sc=new Scanner(new File("ScannerFileTest.java"));
System.out.println("文件内容如下:");
while(sc.hasNextLine())
{
System.out.println(sc.nextLine());
}
}
}
---------- 运行Java捕获输出窗 ----------
文件内容如下:
这是一个普通文本文件
用于测试scanner读取文件流的功能
看到这输出成功
输出完成 (耗时 0 秒) - 正常终止