我得到了所需的输出,但我的代码还没有完成运行。我使用"/"作为扫描仪类的分隔符,我的代码是
Scanner scan = new Scanner(System.in);
scan.useDelimiter("/");
while(scan.hasNext())
{
System.out.println(scan.next());
}
我在"输出"窗口中给出的输入是
Input
abcdef/ghijkl/out/
Output:
abcdef
ghijkl
out
并且该程序仍在运行。
import java.util.Scanner; // headers MUST be above the first class
// one class needs to have a main() method
public class HelloWorld
{
// arguments are passed using the text field below this editor
public static void main(String[] args)
{
Scanner scan = new Scanner("abcdef/ghijkl/out/");
scan.useDelimiter("/");
while(scan.hasNext())
{
System.out.println(scan.next());
}
}
}
这行得通。
您的问题可能是您正在打开键盘扫描仪 (System.in(,但您没有将键盘输入的值存储在任何位置。你可能希望将输入设置为变量,就像我在教授Java的课程中所做的那样:
Scanner scan = new Scanner (System.in);
String input = scan.nextLine(); // input: "abcdef/ghijkl/out/"
String[] stringArray = input.split("/");
for(String i : stringArray)
{
System.out.println(i);
}
问题出在next()
方法上。以下是 Oracle 网站的摘录,其中指出此方法可能会在等待输入扫描时阻塞,即使之前对 hasNext(( 的调用返回 true
公共字符串 next((
从此扫描程序查找并返回下一个完整令牌。完整的标记前后是与分隔符模式匹配的输入。此方法可能会在等待输入扫描时阻塞,即使之前对 hasNext(( 的调用返回了 true。
您必须使用scan.close();
关闭扫描
在这里,您将将其用作
Scanner scan = new Scanner(System.in);
scan.useDelimiter("/");
while(scan.hasNext())
{
System.out.println(scan.next());
scan.close();
}