长话短说,上面的代码(一个更大的程序的一部分)应该能够在用户输入格式错误的分数(例如(1/2/3))时捕获异常。现在,我遇到的问题是我的程序没有捕获以下内容" 1/2 /"。关于代码的这一部分如何能够捕获这种类型的格式错误的部分的任何建议?提前谢谢。
答案 0 :(得分:0)
根据单参数String.split()
方法的Javadoc:
此方法的工作方式就像调用带有给定表达式和limit参数为零的双参数split方法一样。 结尾的空字符串因此不包含在结果数组中。
(强调我的)
如果要包含它,可以使用two-argument overload。将fraction.split("/")
替换为fraction.split("/", 3)
,您的行为符合预期。根据Javadoc对此过载:
如果极限n大于零,则图案最多应用n - 1次。
由于你想要抓住是否有第二个斜杠,你将3
作为第二个参数传递。
答案 1 :(得分:0)
一个分数应该只包含一个正斜杠(/),所以只需检查是否只有一个正斜杠,以及它的两边都有一个数值。如果您使用 String.split(“/”)方法,那么您应该知道应该只有两个数组元素。现在要确定这些元素中的值是否确实是数字数据的字符串表示。您可以使用 String.matches()方法。
它可能看起来像这样:
假设:
无论如何,这个假设可以修改:
BACK
您可以在 String.matches()方法中看到我们使用Regular Expression “\\ d +”,这意味着:
当然,当你将一个正则表达式转义符( \ )放入一个字符串时,你需要转义转义字符,这就是你看到两个转义字符的原因( \\ )在代码中的正则表达式中。