mayeye1989 2015-11-02 19:27 采纳率: 54.5%
浏览 1899
已采纳

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)
这个错误代码,请问该如何改正?

  • 写回答

4条回答 默认 最新

  • havedream_one 2015-11-02 23:30
    关注
     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 "";
        }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)