java - 将文本中写入的数字相加所需的循环

标签 java loops numbers

我正在尝试 Java 教程中的一个问题,我必须创建一个程序来输出句子中的数字总和。尽管数字是以文本格式编写的。我想自己完成这个任务,尽管我偶然发现了一些困难,我希望得到一些建议。

问题的一个例子是,一个 child 有十三个气球,并以三百美分的价格出售。

显然我必须设置变量,以便将字符串数字转换为整数,例如

int one = 1, two = 2, three = 3, twelve = 12, thirty = 30, hundred = 100;

我最初的尝试是创建一个循环,在其中分配一个计数,以便在累积所有数字时停止,尽管循环不断添加第一个数字。

我的问题是,当我使用扫描仪对象输入文本时,需要什么循环来添加第一个(书面)数字,然后移动到第二个(书面)数字,该数字将添加到 sum 变量?

感谢您抽出时间,我希望这个问题很容易理解。

最佳答案

My question is, when I input the text using the scanner object, what loop is required to add the first (written) number and then move onto the second (written) number, which will be added to the sum variable?

不确定我是否理解,但是,首先您逐字阅读(循环,右​​侧),然后检查每个单词是否与文本数字列表中的字符串之一匹配(“一”、“五十”、“百万”)。如果匹配,则将该数字添加到总和中。

我还建议将数字的文本表示形式放入映射中,以便您可以使用输入单词更快地查询它(另一个选项是检查 ArrayList 是否包含该单词,并且对许多单词进行多次迭代会更慢)。

Map<String, Integer> map = new HashMap<String, Integer>();
map.put("one", 1);

程序会执行以下操作:

int sum=0;
for (String word : text) {
    Integer value= map.get(key);
    sum += (value == null ? 0 : value);
}

虽然你没有提到,但你可能有一个数字“三百”。这个解决方案对此并不好。

关于java - 将文本中写入的数字相加所需的循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17367265/

相关文章:

java - 我怎样才能从axis2 SOAP 响应中省略字段?

python - 如何仅迭代元组的第一个变量

Java,处理变量参数并引用基于它们创建的对象(?)

javascript - 如何在 Javascript 原型(prototype)函数中编写递归函数?

java - EJB3 获取原始 JDBC 错误

java.net.ConnectException : Connection refused

java - Azure 中的自定义指标

java - Java 中的循环和条件

javascript - 是否有任何 JavaScript 标准 API 可以根据语言环境解析为数字?

r - 为了看起来更好而用 R 格式化的数字(千位分隔符等)不再是数字?