IBM Host On Demand 宏 (HAScript) - 获取错误消息“Class java.util.Scanner 不包含指定的方法 hasNextInt”

问题描述 投票:0回答:1

我是 IBM Host On Demand 宏 (HAScript) 的新手。它使用 XML 格式,但您可以导入 Java 类并调用方法。我想将整数列表读入变量并迭代它们,对每个整数执行操作。在下面的代码中,我只是尝试使用 java.util.scanner 从文本文件中读取整数,这是尝试循环之前的第一步。

我收到错误消息“Macro.PlayThread.playActions(MacroActions,MacroScreen):类 java.util.Scanner 不包含指定的方法 hasNextInt”。

我正在尝试使用这些手册,但至少可以说它们很模糊,而且很难找到示例。任何帮助将不胜感激。我的背景是 SQL,而不是 Java 或 XML。 谢谢!

我的代码:

<import>
    <!-- Importing Necessary Java classes -->
    <type class="java.io.File" name="javaFile"/>
    <type class="java.io.FileReader"/>
    <type class="java.io.BufferedReader"/>
    <type class="java.io.IOException"/>
    <type class="java.util.ArrayList"/>
    <type class="java.util.Scanner" name="javaScanner"/>
</import>

<vars>
  <!-- Creating an ArrayList variable named $list$ -->
  <create name="$list$" type="java.util.ArrayList" value="$new java.util.ArrayList()$" />
</vars>


<screen name="Screen1" entryscreen="true" exitscreen="true" transient="false">
    <description >
        <!-- OIA settings -->
        <oia status="NOTINHIBITED" optional="false" invertmatch="false" />
    </description>
    <actions>
        <!-- Read integers from the text file -->
        <perform value="$new javaFile(&apos;C:\\Users\\Documents\\scripts\\apps\\allow\\acctlist.txt&apos;)$"  />
        <perform value="$new javaScanner(&apos;C:\\Users\\Documents\\scripts\\apps\\allow\\acctlist.txt&apos;)$"  />
        <if condition="$javaScanner.hasNextInt(true)$" >
              <perform value="$javaScanner.nextInt()$"  />
        </if>
        <else>
              <perform value="$javaScanner.close()$"  />
        </else>
        <!-- Displaying $list$ content (for debugging, remove later) -->
        <message title="" value="$javaScanner.toString()$" />
    </actions>
    <nextscreens timeout="0" >
    </nextscreens>
</screen>
java xml
1个回答
0
投票

我对这个 HAScript 并不熟悉,但我认为答案可能很简单。 您似乎想要使用

java.util.Scanner
并决定下一个输入是否为
Int
。 XML 中有这样的内容:

<if condition="$javaScanner.hasNextInt(true)$" >

但就像错误所说,这里没有这样的

hasNextInt( .... )
需要布尔值的方法。 只有两种方法:

  1. 采用
    Int
    的数字,即数字的基数(或基数)。
  2. 一个不带参数的 - 我想你会想要这个 - 它使用默认基数
    10

参见 https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Scanner.html#hasNextInt()

因此尝试将 XML 更改为:

<if condition="$javaScanner.hasNextInt()$" >
© www.soinside.com 2019 - 2024. All rights reserved.