代码目的:想得到符号两边的数字。
提示输入后能得到第一个next()然后就死掉不动了?请问这是为什么呀??import java.util.Scanner;public class TestScannerDelimit {

public static void main(String[] s){
System.out.println("请输入表达式,例如:3+2,5*3");
Scanner scanner = new Scanner(System.in);

scanner.useDelimiter("[\\+\\-\\*\\/]");
while(scanner.hasNext()) {
System.out.println(scanner.next());
}
scanner.close();
}
}

解决方案 »

  1.   

    碰到过,你要把它先定义成一个变量,否则它一直在找输入。死循环了。
    String st = scanner.next();
    System.out.println(st);
      

  2.   


    哪里是死掉不动,是scanner继续等待从流中读数据呀。
    原因是:若Scanner sc=new Scanner(new File("text.txt"));
    则scanner将一直从文件流中读下去,直至读到流结束(即:文件结束为止)。
    同样道理:Scanner sc=new Scanner(System.in);也是一直从System.in流读下去,直至System.in流结束。
    因此:楼主要按Ctrl+Z来告知scanner,System.in流已结束。
      

  3.   

    估计就是的,scanner很少用,估计就是容易出问题,给楼主个keyboard类,希望有用import java.io.*; 
    public class Keyboard{
      static BufferedReader inputStream = new BufferedReader 
                      (new InputStreamReader(System.in)); 
      public static int getInteger() { 
        try{ 
            return (Integer.valueOf(inputStream.readLine().trim()).intValue()); 
        }
        catch (Exception e) {   e.printStackTrace(); return 0;  } 
        }
       public static String getString() { 
         try{
               return (inputStream.readLine()); 
             }
         catch (IOException e)   { return "0";}  
         }
    }
      

  4.   

    最好少用scanner吧,现在都是图形界面了。已经要灭绝了