Java 扫描仪从文件而不是控制台读取

Java 扫描仪从文件而不是控制台读取,java,java.util.scanner,Java,Java.util.scanner,我试图通过使用命令“javapostfix

我试图通过使用命令“javapostfix
public class PostFix{ 

    String operators[] = new String[]{"+","-","*","/","_","!","#","^","<","<=",">",">=","==","!=","&&","||","$"};
    ArrayList<String> variables = new ArrayList<String>();
    ArrayList<Integer> variable_value = new ArrayList<Integer>();

public static void main(String[] args) {
    // TODO Auto-generated method stub

    PostFix pf = new PostFix();
    pf.getVariables();

}

public void getVariables(){

    Scanner sc = new Scanner(System.in);
    String line = sc.nextLine();
    String tokens[] = line.split(" ");

    while(sc.hasNextLine()){
        System.out.println("in geVariables()");
        for(int i = 0; i < tokens.length; i++){

            if(!Arrays.asList(operators).contains(tokens[i])){

                try{
                Integer.parseInt(tokens[i]);    
                }
                catch(Exception e){
                    //e.printStackTrace();

                    variables.add(tokens[i]);
                    System.out.println("Please enter the value of "+tokens[i]);
                    variable_value.add(sc.nextInt());
                }

            }

        }

    }
    sc.close();     
    }   

}
公共类后缀{
字符串运算符[]=新字符串[]{“+”、“-”、“*”、“/”、“_”、“!”、“#”、“^”、“=”、“=”、“!=”、“&&&-”、“||”、“$”};
ArrayList变量=新的ArrayList();
ArrayList变量_值=新的ArrayList();
公共静态void main(字符串[]args){
//TODO自动生成的方法存根
后缀pf=新后缀();
pf.getVariables();
}
public void getVariables(){
扫描仪sc=新的扫描仪(System.in);
字符串行=sc.nextLine();
字符串标记[]=行。拆分(“”);
while(sc.hasNextLine()){
System.out.println(“in-geVariables()”);
for(int i=0;i
错误:

请输入a的值
线程“main”java.util.InputMismatchException中出现异常
位于java.util.Scanner.throwFor(未知源)
在java.util.Scanner.next(未知源代码)
位于java.util.Scanner.nextInt(未知源)
位于java.util.Scanner.nextInt(未知源)
在PostFix.getVariables(PostFix.java:51)
位于PostFix.main(PostFix.java:16)

in.dat文件的内容:

2 a+b*!c^15/#-$

值x+值y-!=x y使用as
Java PostFix
@Aashil
Java PostFix
意味着“运行
Java PostFix
,就像我在控制台的in.dat中键入了所有内容一样”。无法从控制台读取,因为控制台读取被重定向到in.dat。您不需要在.dat
中使用
java PostFix < in.dat
java PostFix