Scanner in = new Scanner(System.in);
System.out.print("Enter your range (Ex. 1 - 10): ");
String range = in.nextLine();
String lowerRange = range.substring(0, range.indexOf(" "));
**String upperRange = range.substring(range.lastIndexOf(" "));**
int lowerRangeInt = Integer.parseInt(lowerRange);
int upperRangeInt = Integer.parseInt(upperRange);
我需要用户输入两个数字作为范围,并且需要它在同一行,所以我使用in.nextLine并将第一个范围与0索引分开,直到第一个索引为一个空格,给我较低的范围,以及我打算使用空格的最后一个索引给我上限的上限。
我的错误发生在 String upperRange = range.substring(range.lastIndexOf(“”)); 表示当它试图将其转换为int时会有一个额外的空间。
答案 0 :(得分:1)
更改此
String upperRange = range.substring(range.lastIndexOf(" "));
到
String upperRange = range.substring(range.lastIndexOf(" ") + 1 , range.length);
答案 1 :(得分:1)
如果您只想摆脱额外的空间,可以在trim()
上致电String
。但是,我会使用String.split(String)
一步完成。拆分空白。第一个标记是较低范围,最后一个标记是较高范围(中间的任何东西都是分隔符)。像,
String[] values = range.split("\\s+");
int lowerRangeInt = Integer.parseInt(values[0]);
int upperRangeInt = Integer.parseInt(values[values.length - 1]);
答案 2 :(得分:0)
String lowerRange = range.substring(0, range.indexOf(" "));
有效,因为起始索引(0
)是包含的(随结果返回)而结束索引(range.indexOf(" ")
)不是
在查看
时考虑到这一点String upperRange = range.substring(range.lastIndexOf(" "));
应该告诉我们起始索引(range.lastIndexOf(" ")
)是包含在内,因此将包含在响应中。这就是你的空间来源。
简单的解决方案是使用range.lastIndexOf(" ") + 1