老师布置了一个作业,大致如下.
在一篇文章中,例如:
Abc.Def.Ghk.Gml.Zkb.
需要用户输入一个字符.
然后输出前后文.
如用户输入e, 则输出前一个句子,自身句子,和后面的句子.即输出
Abc.DEf.Ghk. (同时需要把用户输入的字符大写)
如果前面或者后面没有句子,则可以忽略.
老师说需要用至少一个静态方法完成.
在此请教各位.
public static String foo(String text, String find) {
String lowertext=text.toLowerCase();
String arr[] = text.split("\\.");
String lowerArr[] = text.split("\\.");
String lowerfind = find.toLowerCase();
for (int i = 0; i < arr.length; i++) {
if (lowerArr[i].indexOf(lowerfind) != -1) {
if (i == 0)
return arr[0] + "." + arr[1] + ".";
else if (i > 0 && i < (arr.length) - 1)
return arr[i - 1] + "." + arr[i] + "." + arr[i + 1] + ".";
else if (i == (arr.length) - 1)
return arr[i - 1] + "." + arr[i] + ".";
}
if (arr[i].indexOf(find) != -1)
break;
}
return null;
}
public static void main(String[] args) {
String oriText = searchText();
Scanner input = new Scanner(System.in);
String cusInput = "";
while (cusInput.length() < 1) {
System.out.println("Please enter a word or a phrase and I will show its context");
cusInput = input.nextLine();
}
String lowerCaseInput = cusInput.toLowerCase();
String lowerCaseText = oriText.toLowerCase();
int a = lowerCaseText.indexOf(lowerCaseInput);
if (a == -1)
System.out.println("The text does not contain the specified phrase.");
else {
String result = foo(oriText, cusInput);
String upperCaseInput = lowerCaseInput.toUpperCase();
System.out.println("The phrase " + upperCaseInput + " appears in the following context:");
System.out.println("----------------------------------------------------------------");
System.out.println((result.replaceFirst(lowerCaseInput, upperCaseInput)));
}
}
}
以上是我的代码,输入某些结果的时候有时候能正确输出,但有时候会显示
context:Exception in thread "main"
java.lang.NullPointerException
at assignment4.main(assignment4.java:55)
这个错误代码,请问该如何改正?