为什么我使用此代码获取索引问题的字符串。 我已经花了很多时间来摆脱这个,但我无法解决。
我想从给定字符的给定字符串中打印最大子字符串和最小子字符串。
scala> trait Reversed
defined trait Reversed
scala> def cv(s: String): String with Reversed =
| s.reverse.asInstanceOf[String with Reversed]
cv: (s: String)String with Reversed
scala> implicit def cv(s: String): String with Reversed =
| s.reverse.asInstanceOf[String with Reversed]
warning: there was one feature warning; re-run with -feature for details
cv: (s: String)String with Reversed
scala> val r: String with Reversed = "hi"
r: String with Reversed = ih
答案 0 :(得分:3)
问题出在这里
for(i=0;i<=length;i++)
如果你有一个n个字符的字符串,这一行将循环到并包括索引n。那不是你想要的。因为你从零开始。实际上你想循环到n-1。
所以你最好把它改成:
for(i=0 ; i < length; i++)
希望这是有道理的。
PS。我不确定其余代码是否正常,但这一行肯定会导致IOOB异常。
答案 1 :(得分:0)
确保您正在致电
in.Close();
完成后使用它。同样如上所述,要警惕越界
for(i=0;i<=length;i++)
另一件需要注意的是,此变量未被使用
int y = str2.compareTo(str3);
请注意未使用的进口产品。
答案 2 :(得分:0)
首先改变:
str1=str.substring(0,a);
str2=str.substring(0,a);
为:
if(a <length){
str1=str.substring(0,a);
str2=str.substring(0,a);
}
并从
更改for循环for(i=0;i<=length;i++)
到:
for(i=0; i < length-a ; i++)