我试图通过使用命令“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<=&&$
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所建议的,您可以从一行中解析输入: 您在正确的轨道上,所做的工作正常。这只是一种更好,更灵活的处理方式。