【问题标题】:How to input command line arguments using fractions如何使用分数输入命令行参数
【发布时间】:2019-04-15 09:16:39
【问题描述】:

我目前对编程很陌生,我需要学习如何使用command line arguments(不使用scanner)输入两个不同的分数,例如:

java Fractions 12/17 3/18

我面临的问题是我的论点中的 '/' 除号。我似乎无法将它们与我的整数分开。

就像 GhostCat 所说的那样,我需要接收 stringarrays 并正确解析 string array 以确定数字并通过命令行参数控制字符。我无法使用扫描仪作为输入。

【问题讨论】:

  • 显示你的代码?
  • 欢迎来到 Stack Overflow!请阅读“如何创建minimal reproducible example”。然后使用edit 链接改进您的问题(不要通过 cmets 添加更多信息)。否则我们无法回答您的问题并为您提供帮助。
  • 是的,真正的部分是:命令行接收一个字符串数组。您需要对该字符串数组进行适当的解析,以确定数字和“控制”字符,例如“/”。

标签: java command-line


【解决方案1】:

您不能直接使用 / 输入分数。如果您的输入需要使用这种格式 2/3,您需要将其加载为字符串,然后使用 split() 方法返回两个可以解析为浮点数的字符串。

String fraction = args[0]; // args[0]="12/17"
String[] splittedFraction = fraction.split("/");
float numerator = Float.parseFloat(splittedFraction[0]);
float denominator = Float.parseFloat(splittedFraction[1]);

您可以使用 int 代替 float,这取决于您的要求。

处理第二部分 args[1] 的方式与处理相同

编辑:我没有意识到您将输入作为命令行的参数。感谢@GhostCat 指出这一点。

【讨论】:

  • 您可能需要补充一点,您不需要在 system.in 中使用 Scanner。您可以处理命令行中的 args 数组。你实际上让他更难理解你的答案,因为你实际上在做不同的事情。
  • 对不起,如果问题令人困惑,我会编辑它。为了更清楚,我认为我不能使用扫描仪类。我需要获取两个参数(例如 1/7、2/3)并将其输入到命令行中。就像 GhostCat 所说的那样,我需要接收一个数组字符串并对字符串数组进行适当的解析以确定数字并控制字符。我目前正在为此苦苦挣扎。
  • @Oxform 我的错误,我使用命令行参数编辑了我的答案。如果您接收多个分数作为参数,只需通过数组 args 将其放入循环中。
  • 嘿 Michal,我尝试运行您的代码,但出现一些错误,例如 char 无法在 fraction.split('/') 上转换为字符串,以及字符串无法转换为浮点数在分裂的分数上。
  • @Oxform 我有一些错误,split() 函数使用字符串而不是字符,参数实际上是正则表达式字符串。然后我使用 parseString() 而不是 parseFloat()。应该没有错误,我尝试编译并运行它。此外,您可能希望使用 int 而不是 float,这取决于您的要求。
【解决方案2】:

命令行不理解 / 意味着您需要一个分数,就其本身而言。将 2/3 视为字符串,然后在您的程序中对其进行解析。

【讨论】:

    猜你喜欢
    • 2014-02-19
    • 1970-01-01
    • 2015-07-20
    • 2016-02-24
    • 2021-04-08
    • 2022-01-26
    • 2019-03-04
    • 1970-01-01
    • 2014-10-19
    相关资源
    最近更新 更多