自动关闭不适用于扫描仪
auto closable not working with Scanner
</p>
<pre><code>package org.test;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegTest {
public static void main(String[] args) throws InterruptedException {
String str = readLine("Enter String :");
String patternString = readLine("Enter pattern to search :");
Pattern pattern = Pattern.compile(patternString);
Matcher matcher = pattern.matcher(str);
System.out.print("match positions: "); // matches positions
while(matcher.find()) {
System.out.print(matcher.start() + " ");
}
System.out.println("");
}
static String readLine(String message){
String strLine;
try (Scanner in = new Scanner(System.in)) {
System.out.println(message);
strLine= in.nextLine();
}
return strLine;
}
}
没有成功。
输出为:
输入字符串:
wewew
输入图案进行搜索:
线程 "main" java.util.NoSuchElementException 中的异常:找不到行
在 java.util.Scanner.nextLine(Scanner.java:1585)
在 org.test.RegTest.readLine(RegTest.java:39)
在 org.test.RegTest.main(RegTest.java:22)
当 try-with-resources(可自动关闭)关闭扫描器时,它也会关闭输入流,使其在未来无法使用。
由于 System.in 是全局输入流,这意味着第二个扫描器无法从输入流中读取任何内容,因为它已关闭并抛出异常。
我会更改代码以重复使用 sanner 进行两次读取。
public static void main(String[] args) throws InterruptedException {
try (Scanner in = new Scanner(System.in)) {
String str = readLine(in, "Enter String :");
String patternString = readLine(in, "Enter pattern to search :");
Pattern pattern = Pattern.compile(patternString);
Matcher matcher = pattern.matcher(str);
System.out.print("match positions: "); // matches positions
while (matcher.find()) {
System.out.print(matcher.start() + " ");
}
System.out.println("");
}
}
static String readLine(Scanner in, String message) {
String strLine;
System.out.println(message);
strLine = in.nextLine();
return strLine;
}
</p>
<pre><code>package org.test;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegTest {
public static void main(String[] args) throws InterruptedException {
String str = readLine("Enter String :");
String patternString = readLine("Enter pattern to search :");
Pattern pattern = Pattern.compile(patternString);
Matcher matcher = pattern.matcher(str);
System.out.print("match positions: "); // matches positions
while(matcher.find()) {
System.out.print(matcher.start() + " ");
}
System.out.println("");
}
static String readLine(String message){
String strLine;
try (Scanner in = new Scanner(System.in)) {
System.out.println(message);
strLine= in.nextLine();
}
return strLine;
}
}
没有成功。
输出为:
输入字符串:
wewew
输入图案进行搜索:
线程 "main" java.util.NoSuchElementException 中的异常:找不到行
在 java.util.Scanner.nextLine(Scanner.java:1585)
在 org.test.RegTest.readLine(RegTest.java:39)
在 org.test.RegTest.main(RegTest.java:22)
当 try-with-resources(可自动关闭)关闭扫描器时,它也会关闭输入流,使其在未来无法使用。
由于 System.in 是全局输入流,这意味着第二个扫描器无法从输入流中读取任何内容,因为它已关闭并抛出异常。
我会更改代码以重复使用 sanner 进行两次读取。
public static void main(String[] args) throws InterruptedException {
try (Scanner in = new Scanner(System.in)) {
String str = readLine(in, "Enter String :");
String patternString = readLine(in, "Enter pattern to search :");
Pattern pattern = Pattern.compile(patternString);
Matcher matcher = pattern.matcher(str);
System.out.print("match positions: "); // matches positions
while (matcher.find()) {
System.out.print(matcher.start() + " ");
}
System.out.println("");
}
}
static String readLine(Scanner in, String message) {
String strLine;
System.out.println(message);
strLine = in.nextLine();
return strLine;
}