当前位置: 首页 > 知识库问答 >
问题:

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

仲鸿风
2023-03-14

我试图通过使用命令“java postfix

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

}

错误:

请在java.util.scanner.throwfor(未知源)
java.util.scanner.next(未知源)
在java.util.scanner.nextInt(未知源)
在java.util.scanner.nextInt(未知源)
在java.util.scanner.nextInt(未知源)
在java.util.scanner.nextInt(未知源)
在postfix.getvariables(postfix.java:51)

in.dat文件的内容:

2a+b_*!c c^15/#-$
值x+值y-!=x y<=&&$

共有1个答案

艾望
2023-03-14
java PostFix < in.dat

意味着所有标准输入都将取自.dat文件中的

您的Java代码不知道此重定向。它只是从system.in读取(即标准输入),这通常意味着键盘。

因此,解决方案是简单地让您的代码运行而不进行任何重定向,就像

java PostFix

 类似资料:
  • 问题内容: 我有此方法,并且从控制台(键盘)读取了一个整数序列,并将所有整数添加到ArrayList中,我使用Scanner类读取了这些数字,但是在for循环中不起作用,它抛出“ java.util.NoSuchElementException”。 问题答案: 首先,使用一个扫描仪,而不是每次都重新创建一个扫描仪。此外,您的for循环还会多循环一次。 这对我来说很好,最后列表包含了我输入的所有数字

  • 问题内容: 我正在玩Scanner类,以进行学习,并且我使用它来读取非常大的文件(大约60.000行,大约不使用Reader类),并且在大约400行后停止读取。我是否必须在Scanner的构造函数中使用Bufferedreader还是问题?我想知道为什么会这样。谢谢。我的代码是输出所有行的常用代码。 问题答案: 此问题通常在64位计算机上或文件大小大于1-2 GB的文件中更常见,并且与堆空间无关。

  • 我想从标准输入中读取一个双数,但是我总是得到这个异常: Java . util . inputmismatchexception 如果输入是整数,那没问题,但是如果是双精度的,我会得到异常。 线程“main”Java . util . inputmismatchexception Java . util . scanner . throw for(scanner . Java:864)Java .

  • 问题内容: 编辑 以便进一步阅读:问题是我的输入文件已损坏。 我不明白我在做什么错: 我正在使用此代码: 哪个工作正常。现在,由于某种原因,我想换一个扫描仪。我的代码变成: 这次,我们从不输入while,因为r.hasNextLine()始终返回“ false”。关于我在做什么错的任何想法吗? 我精确地说,没有其他更改,文件仍然相同。 编辑 :我还精确地我尝试了另一个文件,并得到相同的结果,这意味

  • 我想从Java程序接收Arduino Uno上的多个字节。arduino在收到数据后立即处理数据,因此我不需要存储它,我使用串行RX缓冲区作为临时存储,直到我实际读取字节为止。完全实现后,每次将发送大约150个字节,但我已经修改了缓冲区大小来解决这个问题。我使用jSerialComm作为java的串行库 我在下面放了一些arduino和java代码。当我从IDE的串行监视器发送字节,按预期点亮le

  • 问题内容: 我正在尝试做的是拥有多个具有不同变量的输入。每个变量将是不同方程式的一部分。我正在寻找一种方法来做,我想我有一个主意。我只想知道这是否合法,也许还有更好的方法。 问题答案: 如果每个输入都问相同的问题,则应使用循环和输入数组: 或者如Chip所建议的,您可以从一行中解析输入: 您在正确的轨道上,所做的工作正常。这只是一种更好,更灵活的处理方式。