【发布时间】:2015-07-21 15:17:42
【问题描述】:
我正在尝试解决这个问题:https://www.hackerrank.com/challenges/morgan-and-a-string
这是我的代码:
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
public class Solution
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
int t = Integer.parseInt(sc.nextLine());
while((t--)>0)
{
String s1 = sc.nextLine();
String s2 = sc.nextLine();
System.out.println(ms(s1,s2));
}
}
public static String ms(String s1, String s2)
{
StringBuffer sb = new StringBuffer();
int i,j;
for(i=0,j=0;i<s1.length() || j<s2.length() ;)
{
if(s1.charAt(i)>s2.charAt(j))
{
sb.append(s2.charAt(j));
if(j==s2.length())
break;
else
j++;
}
else
{
sb.append(s1.charAt(i));
if(i==s1.length())
break;
else
i++;
}
}
if(j==s2.length())
{
for(;i<s1.length();i++)
sb.append(s1.charAt(i));
return sb.toString();
}
else
{
for(;j<s2.length();j++)
sb.append(s2.charAt(j));
return sb.toString();
}
}
}
我收到此错误:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 4
at java.lang.String.charAt(String.java:658)
at Solution.ms(Solution.java:28)
at Solution.main(Solution.java:18)
谁能告诉我哪里出错了?我找不到错误...
【问题讨论】:
-
嗯
i<s1.length() || j<s2.length()在我看来是错误的,首先...我怀疑你想要&&而不是||,所以当你到达 either 字符串... -
旁注:此类问题通常可以通过在调试器中运行程序来解决;或(较少“推荐”:通过为每个重要语句插入跟踪语句。)
标签: java arrays string indexoutofboundsexception