扫描仪类输入不以分隔符结尾

时间:2017-06-19 13:00:28

标签: java java.util.scanner delimiter

我得到了所需的输出,但我的代码还没有运行完毕。 我使用“/”作为扫描仪类的分隔符,我的代码是

Scanner scan = new Scanner(System.in);        
scan.useDelimiter("/");
while(scan.hasNext())
{
  System.out.println(scan.next());
}

我在输出窗口输入的内容是

Input
abcdef/ghijkl/out/

Output:
abcdef
ghijkl
out

该程序仍在运行。

3 个答案:

答案 0 :(得分:2)

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);
}

答案 1 :(得分:1)

问题在于response.WriteResponseStreamToFile(Server.MapPath(cwrFilePath)); 方法。以下是yield the same connection的摘录,其中指出此方法在等待输入扫描时可能会阻塞,即使之前的hasNext()调用返回true

  

public String next()

     

查找并返回此扫描仪的下一个完整令牌。在完成令牌之前和之后是与分隔符模式匹配的输入。 此方法可能在等待输入扫描时阻塞,即使之前的hasNext()调用返回true

答案 2 :(得分:-2)

您必须使用scan.close();

关闭扫描

这里你将它用作

Scanner scan = new Scanner(System.in);        
scan.useDelimiter("/");
while(scan.hasNext())
{
  System.out.println(scan.next());
  scan.close();
}