java-JAVA作业题提问,关于字符串和静态方法.

问题描述

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

java-JAVA作业题提问,关于字符串和静态方法.的相关文章

java类的问题-java题,将该字符串每个字符与&amp;amp;#39;U&amp;amp;#39;之差的绝对值的升序排序

问题描述 java题,将该字符串每个字符与'U'之差的绝对值的升序排序 输入一组字符串,将该字符串每个字符与'U'之差的绝对值的升序排序.在线等!!? 解决方案 每个字符都减去同一个字符跟不减不一样么?没有必要啊.直接排序即可. 解决方案二: 首先,按照我的一贯观点,这种问题和编程语言无关,和编程语言无关,和编程语言无关.重要的事情说三遍! 设计重点:1.与U的差值存储;2.升序排序. 已知的排序算法相当多,不过在本问题情形下,需要稍作变通. 给出一个简单方案吧:给定字符串Char[];比较差值

Gson对Java嵌套对象和JSON字符串之间的转换

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,具有良好的跨平台特性.近几年来已经和XML一样成为C/S架构中广泛采用的数据格式.有关JSON的更多知识,请参考以下内容:http://json.org/json-zh.html 在服务器和客户端之间使用JSON数据格式进行通信,经常会涉及到JAVA对象和JSON字符串之间的转换.通常,我们可以使用一些JSON解析工具,例如:Gson,FastJson等.当然,我们也可以手动解析,只是会比较繁琐. 下面

求助大神帮忙 在线等-JAVA初学者的提问?在线等!

问题描述 JAVA初学者的提问?在线等! 这三个表之间有什么关系 解决方案 ......... 能有什么关系啊. 瞬间觉得你提问是不是没有这么简单. 解决方案二: 哦,原来没有关系啊!我一直在找有什关系呢?看来我想多了 解决方案三: 第2张表的BILLID是第1张表主键的外键,第2张表的SUPPLIERID是第3张表主键的外键 解决方案四: 主外键关联的关系啊,US表中.useid是主键,另外两个id字段是关联的外键,通过主外键关联的关系可以实现通过一张表的数据查询到相关联的另外一张表的数据,实

string-关于java中String类型汉字字符串的升序问题

问题描述 关于java中String类型汉字字符串的升序问题 本人新手,遇到一个项目问题:有若干个对象,每个对象里面都有一个String类型的姓名属性,现在要求根据姓名属性的升序将这些对象排列在List集合里,问如何将String类型的汉字升序排列.求大神 解决方案 String[] strs = {""张三(Z)""李四(L)""王五(W)""}; // 定义一个中文排序器 Comparator c = Collator.g

java怎么把转换成字符串转换成中国人习惯看的时间。

问题描述 java怎么把转换成字符串转换成中国人习惯看的时间. 如下代码 public class Test{ public static void main(String[] args) throws Exception { String str="2015/4/13"; Date d=new SimpleDateFormat("yyyy/MM/dd").parse(str); System.out.println(d);} } 打印出来的结果是 Mon Apr

java 如何用datagramsocket 传输字符串数组

问题描述 java 如何用datagramsocket 传输字符串数组 传输一个String我懂,把String转换为字符数组再传输,但是字符串数组该怎么办呢? PS:我想把好几个字符串一次性传过去,于是想用字符串数组,但是不知道该怎么做,谢谢各位大神 解决方案 可以把数组所有的字节拼装放入一个byte[]中传递.示例代码: public class Main { public static void main(String[] args) { String[] datas = {"hello&

JAVA中获取两个字符串差异的方法

问题描述 JAVA中获取两个字符串差异的方法 求助,在编程的过程中碰到这样一个问题,有两个String字符串,然后我需要获取他们之间的差异 String s = {"12345"}; String s1 ={"123645"}; 其中这两个数组的长度可变,s是模板,所有的数组都要和这个数组比较,然后把差异的部分获取出来 所以s1可以是缺了一两个元素的数组,仅仅是单个的字符被替换了,这个可以简单的用字符数组一个一个比较获得,但是如果多一个,或者少一个,这一块我就有点不

java新手 主函数里面能创建静态方法吗

问题描述 java新手 主函数里面能创建静态方法吗 题目要求: 有一个抽象类ObjectVolume,如下所示: abstract class ObjectVolume { abstract double getVolume(); //返回物体的体积 } (1)编写球体类,立方体类和圆柱体类,它们是抽象类ObjectVolume的子类. (2)编写一个公共类,其中包含main方法和static void get(ObjectVolume obj)方法. (3)在main方法中,从键盘上输入1(表

java实现求两个字符串最长公共子串的方法_java

本文实例讲述了java实现求两个字符串最长公共子串的方法.分享给大家供大家参考,具体如下: 这个是华为OJ上的一道题目.首先,如果我们用java写代码,华为OJ有以下三条规则需遵守,否则编译无法通过或者用例无法通过,规则如下: (1)一定不可以有包名: (2)主类名只能为Main: (3)不可以输出与结果无关的信息. 好了,按照以上规则,我们写出来的代码如下(此代码不是最优的,只是用来记录华为OJ上java代码的书写规则): import java.util.Scanner; public cl