Java 扫描仪从文件而不是控制台读取
我试图通过使用命令“javapostfixJava 扫描仪从文件而不是控制台读取,java,java.util.scanner,Java,Java.util.scanner,我试图通过使用命令“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
@AashilJava PostFix
意味着“运行Java PostFix
,就像我在控制台的in.dat中键入了所有内容一样”。无法从控制台读取,因为控制台读取被重定向到in.dat。您不需要在.dat中使用。
java PostFix < in.dat
java PostFix