- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
在代码中
switch(token){
case StreamTokenizer.TT_EOF:
eof = true;
break;
case StreamTokenizer.TT_NUMBER:
double value = tokenizer.nval;
operands.add(value);
break;
case StreamTokenizer.TT_WORD:
operate(tokenizer.sval);
break;
default:
throw new WrongPhraseException("Unnexpected operator or operand: " + tokenizer.sval +".");
}
我给出输入 RPN,例如:5 4 3 + *
为什么+不被视为TT_WORD,它不被视为它所以它抛出异常。
最佳答案
来自StreamTokenizer
文档:
For a single character token, its value is the single character, converted to an integer.
由于您的 +
字符是单个字符,因此可能会被视为 TT_NUMBER
;您的 TT_NUMBER
案例陈述也需要处理这些案例。我认为这同样适用于未加引号的 *
字符。因此你可以尝试这样的事情:
case StreamTokenizer.TT_NUMBER:
Double value = new Double(tokenizer.nval);
if (Character.isDigit(value.intValue()) {
operands.add(value.doubleValue());
} else {
// Possibly dealing with operator here. The hard/fun part is
// in coercing that double value back to its tokenized string
// form.
operate(new Character((char) tokenizer.nval).toString());
}
break;
希望这有帮助!
关于java - StreamTokenizer 不将 + 视为单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36291941/
我使用方法 quoteChar('"') 来处理字符串。解析字符串时,常见的转义序列(例如“\n”和“\t”)会被识别并转换为单个字符。有什么方法可以让字符串保持原样,这意味着如果我有字符串: Hel
简而言之:如何更改 StreamTokenizer,以便它将输入文件中的每个字符拆分为标记。 例如,如果我有以下输入: 1023021023584 如何读取它以便将每个单独的字符保存到数组的特定索引中
考虑这个在教程点上找到的程序(其中 br 是 BufferedReader 对象): boolean eof = false; // Parse incoming request StreamToke
我正在为实验室开发自己的解析器,并且在使用 StreamTokenizer 时遇到了一些奇怪的行为。似乎任何用单引号括起来的东西都会被跳过。 代码 StreamTokenizer st = new S
我正在制作一个 HTML 渲染器。我将 html 文件读入 StreamTokenizer 中。目前它打印出正确的标记,并在我的 html 文件中指定用美元括起来的 varbiles,例如 $myVa
我有以下语法: gui ::= Window String widgets widgets ::= Button STRING ';'| radio_button End ';
我必须在 Java 中接受包含大量 10^9 阶的输入。如何快速处理输入?另外,由于streamtokenizer.nval给出了一个 double 值,我如何读取更大的值? 最佳答案 在解析之前,重
我已经挪用并修改了以下代码,这些代码在使用 Java 的 StreamTokenizer 对 Java 代码进行标记化方面做得非常好。但是,它的数字处理是有问题的: 它将所有整数转换为 double
我正在尝试实现一个分词器来将数学输入字符串解析为单独的部分,当我发布它期待一个 ; 时,我在第二行代码中遇到了一个看似微不足道的错误。线路中间的某个地方。 public static void par
我正在使用StreamTokenizer编写一个解析器。我需要像 "8a" 这样的输入来回显数字包含字符的错误。相反,它打印: NUM: 8 ID: a 它似乎将字符识别为单独的标记,即使没有空格分隔
我有一个接受数字的 StreamTokenizer。但是,解析的数字与输入的数字不同。 示例代码: String str = "1000000000000.0000000000000"; double
我正在使用 Java 的 StreamTokenizer 来标记代码文本输入。 当转义字符出现在字符串中时,分词器将它们取消转义,而我想保持字符串不变。 例如: Input: String str =
我正在使用 StreamTokenizer 来解析文本,我需要确保某些标记之间有空格。例如,“5+5”是非法的,但“5 + 5”是有效的。 我真的不太了解StreamTokenizer;我阅读了 AP
我有一个 StreamTokenizer,可以对字符串进行标记。我对从字符串中获取下一个标记以及剩余字符串(没有我们刚刚获取的标记)的方法感兴趣。 public static void parseSt
我正在为我的类开发一个解析器,它使用 StreamTokenizer java 中的类。在出现解析错误的情况下,我希望能够打印发生错误的标记开始的字符的确切行和偏移量。然而,虽然StreamToken
我有一个用于解析标记的 StreamTokenizer。当我将以下内容传递给标准输入时: a b_c d 解析的标记(在 stdout 上)是: a b null c d 为什么会这样?如果下划线是单
查看 StreamTokenizer 的演示代码 here .当字符串中有/时似乎无法正常工作(只需在StringReader中的字符串之间添加/)。这是来自上述链接的代码, StreamTokeni
在代码中 switch(token){ case StreamTokenizer.TT_EOF: eof = true; break; case Str
我正在尝试解析包含电子邮件地址的文档,但是 StreamTokenizer将电子邮件地址分成两个独立的部分。 我已经将 @ 符号设置为 ordinaryChar 并将空格设置为唯一的 whitespa
你好我正在构建自己的 StreamTokenizer 来满足我的需求。就像 java 的 StreamTokenizer 一样,我有一个 nextToken() 方法,它返回一个表示找到的数据类型的整
我是一名优秀的程序员,十分优秀!