6.1 与用户互动

一、运行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 秒) - 正常终止
原文地址:https://www.cnblogs.com/weststar/p/12461157.html