目录:
1.boolean hasNextLine()方法、String nextLine()方法 :
1.1 用boolean hasNextLine( )在控制台上获取数据
判断是否还有下一行数据可供读取,有返回true,否则返回false。当你使用hasNextLine()方法,它会等待你输入一行数据,然后判断这一行是否为空行或还有下一行可供读取。
它通常与nextLine( )配合使用,用于循环读取多行输入。 也就是说: 配合while语句来让用户在控制台输入多行数据,此时要用到hasNextLine( )判断下一行是否有数据,有则返回true,且用nextLine( )来获取这一行数据。
例如
Scanner scanner = new Scanner(System.in); System.out.println("请输入多行文本,以空行结束: "); //hasNextLine() : 判断是否还有下一行数据可供读取,有返回true,否则返回false //当你在使用hasNextLine()方法时,它会等待你输入一行数据,这是因为它需要判断这一行是否 为空行或是否还有下一行可供读取。 while (scanner.hasNextLine()) { //先让我进行一行数据的输入 String line = scanner.nextLine(); //获取一行数据 if (line.isEmpty()) { // 如果输入为空行,则结束循环 break; } // 处理当前行的输入 System.out.println("输入的行内容:" + line); //后又回到while语句中的scanner.hasNextLine()来实现一行数据的输入和判断是否还有下一行数据 可供读取 } scanner.close();
1.2 用String nextLine( )在控制台上获得数据
读取输入的一行字符串,以Enter键为结束符。也就是说,当你输入信息后按下Enter键时,nextLine( )方法会返回输入的整行文本,包括Enter键本身。
例1如:(单独使用)
Scanner in = new Scanner(System.in); System.out.println("请输入一行信息"); String Info = in.nextLine(); //如果输入: 世界,你好 美丽家园(按下enter键),此时会返回刚输入的信息到Info中 System.out.println(Info); //世界,你好 美丽家园
例2如 :(结合hasNextLin( ) + While语句使用)
Scanner scanner = new Scanner(System.in); System.out.println("请输入多行文本,以空行结束: "); //hasNextLine() : 判断是否还有下一行数据可供读取,有返回true,否则返回false //当你在使用hasNextLine()方法时,它会等待你输入一行数据,这是因为它需要判断这一行是否 为空行或是否还有下一行可供读取。 while (scanner.hasNextLine()) { //先让我进行一行数据的输入 String line = scanner.nextLine(); //获取一行数据 if (line.isEmpty()) { // 如果输入为空行,则结束循环 break; } // 处理当前行的输入 System.out.println("输入的行内容:" + line); //后又回到while语句中的scanner.hasNextLine()来实现一行数据的输入和判断是否还有下一行数据 可供读取 } scanner.close();
1.3 用boolean hasNextLine( )在文件上获得数据
判断文件中是否还有下一行数据可供读取,有返回true,否则返回false。
读取文件使用hasNextLine时,我们可以在循环中判断是否还有下一行可读取,返回true时,用nextLine()方法获取这一行的数据。
例如:
File file = new File("data.txt"); Scanner scanner = new Scanner(file); // scanner.hasNextLine(): 判断文件中是否还有下一行数据可供读取,有返回true,否则返回false while (scanner.hasNextLine()) { //true String line = scanner.nextLine(); //scanner.nextLine(): 获得这一行的数据 // 对读取的数据进行处理 System.out.println(line); } scanner.close();
1.4 用String nextLine( )在文件上获得数据
读取文件中的一行数据, 并将这一行数据作为一个字符串返回。
例如:
File file = new File("data.txt"); Scanner scanner = new Scanner(file); // scanner.hasNextLine(): 判断文件中是否还有下一行数据可供读取,有返回true,否则返回false while (scanner.hasNextLine()) { //true String line = scanner.nextLine(); //scanner.nextLine(): 获得这一行的数据 // 对读取的数据进行处理 System.out.println(line); } scanner.close();
2.boolean hasNext()方法、String next()方法 :
2.1 用boolean hasNext( )在控制台上获得数据
判断是否还有下一个数据项可供读取,如果有返回true,否则返回false。
通常来说,hasNext( )会结合Next() + While语句来循环获得从控制台中输入的多个字符串。
例如:
Scanner scanner = new Scanner(System.in); System.out.println("请输入多个字符串,以空格分隔: "); // .hasNext() : 判断是否还有下一个字符串可供读取,如果有返回true,否则返回false。 while (scanner.hasNext()) { String str = scanner.next(); // next(): 获得该字符串 // 对读取的字符串进行处理 System.out.println("输入的字符串:" + str); } scanner.close();
2.1 用String next( )在控制台上获得数据
读取第一个数据项 ( 读取一个数据项 ), 并将其作为一个字符串返回 。以空格/制表符/换行符为分隔符,以Enter为结束符,当一行中有多个数据项时,只会返回第一个数据项。
当结合hasNext( ) + While使用时,该方法表示:读取一个数据项,并作为字符串返回。
例1如:(单独使用)
Scanner scanner = new Scanner(System.in); System.out.print("请输入信息(只会返回第一个字符串): "); String str = scanner.next(); //如果输入apple school home System.out.println(str); //apple scanner.close();
例2如:(结合 hasNext( ) + While语句使用)
Scanner scanner = new Scanner(System.in); System.out.println("请输入多个字符串,以空格分隔: "); // .hasNext() : 判断是否还有下一个字符串可供读取,如果有返回true,否则返回false。 while (scanner.hasNext()) { String str = scanner.next(); // next(): 获得该字符串 // 对读取的字符串进行处理 System.out.println("输入的字符串:" + str); } scanner.close();
2.3 用boolean hasNext( )在文件上获得数据
判断文件中是否还有下一个数据项可供读取,如果有返回true,否则返回false。
通常来说,hasNext( )会结合Next() + While语句来循环获得从文件中的信息(字符串)。
例如:
File file = new File("data.txt"); Scanner scanner = new Scanner(file); // hasNext(): 判断文件中是否有下一个数据项可供读取,有返回true,否则返回false while (scanner.hasNext()) { String data = scanner.next(); //获得该数据项(一个字符串) // 对读取的数据进行处理 System.out.println(data); } scanner.close();
2.4用String next( )在文件上获得数据
读取一个数据项 ,并将其作为一个字符串返回 。
在文件中获得数据时,一般结合hasNext( ) + While使用。
例如:
File file = new File("data.txt"); Scanner scanner = new Scanner(file); // hasNext(): 判断文件中是否有下一个数据项可供读取,有返回true,否则返回false while (scanner.hasNext()) { String data = scanner.next(); //获得该数据项(一个字符串) // 对读取的数据进行处理 System.out.println(data); } scanner.close();
2.5与Scanner输入输出有关的 (剩下的) 方法
Scanner (InputStream in)
用给定的输入流创建一个Scanner对象。
int nextInt()
获得输入的一个数据项,并将其作为一个整数返回。
double nextDouble()
获得输入的一个数据项,并将其作为一个浮点数返回。
boolean hasNextInt()
判断是否还有一个int类型 (整数) 的数据项。
boolean hasNextDouble()
判断是否还有一个double类型 (浮点数) 的数据项。
Scanner (String data)
构造一个从给定字符读取数据的Scanner对象。
PrintWriter(String fileName)
构造一个将数据写入到文件的PrintWriter对象。文件名由参数指定。
static path of(String pathname)
根据给定的路径名构造一个path。
static Console console()
如果可以进行交互,就返回一个Console对象通过控制台窗口与用户交互,否则返回null。对于任何一个在控制台窗口启动的程序,都可以使用Console对象。否则,是否可以取决于所使用的系统
static char[] readPassword(String prompt ,Object … args)
static String readLine(String prompt , Object … args)
显示字符串prompt(提示符)并读取用户输入,知道输入行结束。args参数可以用来提供格式参数。
Path.of(“ ”):
创建一个表示文件路径的Path对象。
StandardCharsets.UTF_8:
指定文件的字符编码为UTF-8。
3.文件输入 (读取文件信息 ) 与输出 ( 将数据写入文件 ):
3.1 new Scanner(Path.of(“mylife.txt”)) 和 new Scanner(file)的区别
- 两者都可以用于创建一个用于读取文件的 Scanner 对象,但它们之间有一些区别。
- new Scanner(Path.of(“mylife.txt”)):
这种方式是使用 Java 7 中引入的 Path 类的静态方法 of() 来创建文件路径。它将文件路径作为字符串参数传递给 of() 方法来创建一个 Path 对象,然后将该对象传递给 Scanner 构造函数。这种方式更加简洁,适用于 Java 7 及更高版本。- new Scanner(file):
这种方式是使用 java.io.File 类来创建一个文件对象,然后将该对象传递给 Scanner 构造函数。这种方式可以在任何 Java 版本中使用。- 选择哪种方式更好取决于个人偏好和使用的 Java 版本。如果在使用 Java 7 或更高版本,推荐使用 new Scanner(Path.of(“mylife.txt”)),因为它更简洁。如果使用的是旧版本的 Java,或者在项目中已经使用 java.io.File 类,那么可以继续使用 new Scanner(file)。
3.2 用Scanner对象读取文件-方法1
文件输入方式1:获取文件中数据,需要构造一个Scanner对象,结合用 hasNextLine()方法 + String nextLine()方法 + Path.of(“xxx”) 来读取文件中数据。
例如:
/** Path.of(“xxx”): 创建一个表示文件路径的Path对象 == 创建File对象的方式 StandardCharsets.UTF_8: 指定文件的字符编码为UTF-8 */ Scanner scanner = new Scanner(Path.of("mylife.txt"), StandardCharsets.UTF_8); // .hasNextLine() : 检测下一行是否有数据,如果有返回true,否则返回false while (scanner.hasNextLine()) { String line = scanner.nextLine(); //读取这一行数据 System.out.println(line); } scanner.close(); //关闭Scanner对象
如果文件名中包含反斜杠( \ )符号,要每个反斜杠之前再加一个额外的反斜杠转义:“C:\mydirectory\myfile.txt”
3.3 用Scanner对象读取文件-方法2
- 文件输入方式2:获取文件中数据,需要构造一个Scanner对象,结合用 hasNextLine()方法 + String nextLine()方法 + Path.of(“xxx”) + 创建File对象 来读取文件中数据。
File file = new File("C:\\mydirectory\\myfile.txt""); Scanner scanner = new Scanner(file); // .hasNextLine() : 检测下一行是否有数据,如果有返回true,否则返回false while (scanner.hasNextLine()) { String line = scanner.nextLine(); //获得一行数据 System.out.println(line); } scanner.close();
3.4 用PrintWriter对象写入文件
可通过构建PrintWriter对象来写入文件:将数据存储到文件中。直接通过writer.println(“”)来存储信息到文件中。如果文件不存在,则会创建该文件。
例如:
// 创建PrintWriter对象 PrintWriter writer = new PrintWriter("output.txt"); // 写入数据到文件 writer.println("Hello,World"); writer.println("世界你好"); writer.close(); // 关闭PrintWriter对象