更正键盘输入的英语书写
要求:
1. 从键盘输入英文句子,最多可以输入100行,当用户输入一个空行(直接回车)时,输入结束。
2. 程序内构造数组,保存输入的英文句子。
3. 按照一套规则纠正英文句子的拼写,然后在屏幕上输出结果。
4. 纠正英文句子的规则如下:
a) 每个英文句子的句首字母大写。
b) 给每个句子的句首添加行号。
c) 将小写的“zjicm”都替换成大写的“ZJICM”。
d) 如果行末没有句号,则自动添加句号。
 自己的程序如下 只完成了a,b两个要求 希望高手把另外两个要求在我原程序的基础上添加import java.io.*;public class j1
{    public j1()
    {
    }    public static void main(String args[])
    {
        String args1[] = new String[100];
        InputStreamReader inputstreamreader = new InputStreamReader(System.in);
        BufferedReader bufferedreader = new BufferedReader(inputstreamreader);
        try
        {
            int i = 0;
            do
            {
                if(i >= 100)
                    break;
                args1[i] = bufferedreader.readLine();
                if(args1[i].length() == 0)
                    break;
                i++;
            } while(true);
            for(int j = 0; j < i; j++)
                System.out.println(args1[j]);
                String replace("zjicm","ZJICM");
            for(int k = 0; k < i; k++)
            {
                String s = args1[k].substring(0, 1);
                args1[k] = (new StringBuilder()).append(s.toUpperCase()).append(args1[k].substring(1)).toString();
                args1[k] = (new StringBuilder()).append(k + 1).append(". ").append(args1[k]).toString();
                
                System.out.println(args1[k]);
            }        }
        catch(IOException ioexception)
        {
            System.out.println(ioexception.getMessage());
        }
    }
}

解决方案 »

  1.   

    //接收用户输入
    Scanner sc = new Scanner(System.in);
    ArrayList<String> list = new ArrayList<String>();
    String line = null;
    for(int i=0; i<100; i++) {
    line = sc.nextLine();
    if(line.length() == 0) {
    break;
    } else {
    list.add(line);
    }
    }

    System.out.println("输入结束,对所有句子进行矫正后,结果如下:");

    StringBuilder sb = new StringBuilder();
    char letter = ' ';
    String line_num = null;
    String s1 = "zjicm";
    for(int i=0; i<list.size(); i++) {
    sb.replace(0, Integer.MAX_VALUE, list.get(i).trim());

    // 规则a) 首字母大写
    letter = sb.charAt(0);
    if(Character.isLowerCase(letter)) {
    sb.replace(0, 1, Character.toUpperCase(letter)+"");
    }

    // 规则b) 添加行号
    line_num = String.format("%1$02d. ", i+1);
    sb.insert(0, line_num);

    // 规则c) 将句子中的小写的“zjicm”都替换成大写的“ZJICM”
    for(int j=0, pos; j<sb.length(); j++) {
    letter = sb.charAt(j);
    pos = s1.indexOf(letter);
    if(pos >= 0) {
    sb.replace(j, j+1, Character.toUpperCase(letter)+"");
    }
    }

    // 规则d) 如果句子末尾没有句号,添加句号
    letter = sb.charAt(sb.length()-1);
    if(letter != '.') {
    sb.append('.');
    }

    //输出矫正后的句子
    System.out.println(sb);
    }