问题描述
- JAVA作业题提问,关于字符串和静态方法.
-
老师布置了一个作业,大致如下.
在一篇文章中,例如:
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)
这个错误代码,请问该如何改正?
解决方案
public static String foo(String s, String find)
{
String arr[] = s.split(".");
for (int i = 1; i < arr.length - 1; i++)
{
int pos =arr[i].indexOf(find);
if ( pos != -1)
arr[i] = arr[i].substring(0,pos) + (char)(arr[i].charAt(pos)+32)+arr[i].substring(pos+1);
if(pos == 0){
return arr[i] + "." + arr[i + 1];
}
return arr[i - 1] + "." + arr[i] + "." + arr[i + 1];
}
return "";
}
解决方案二:
http://ideone.com/GWBSI4
编译运行通过。自己把输入修改下。
解决方案三:
/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
public static String foo(String s, String find)
{
String arr[] = s.split(".");
for (int i = 1; i < arr.length - 1; i++)
{
if (arr[i].indexOf(find) != -1)
return arr[i - 1] + "." + arr[i] + "." + arr[i + 1];
}
return "";
}
public static void main (String[] args) throws java.lang.Exception
{
String str = "Abc.Def.Ghk.Gml.Zkb.";
String input = "e";
String result = foo(str, input);
System.out.println(result);
}
}
解决方案四:
这么基础的东西 还来这里发问题。。。。。。 良辰实在是佩服
解决方案五:
Java可以重写静态方法吗?
时间: 2024-10-23 23:46:39