java考试帮助在控制台输入一行英文语句

在控制台输入一行英文语句,设计一个算法,能够实现如下效果:

(1) 每个单词的首字母大写,后面的小写

(2) 单词之间如果有多个空格,则将其调整为1个空格

(3) 单词的首末空格要全部去除

例如:

输入: Opportunity kocks buT oNce

输出:Opportunity Knocks But Once*/

代码如下,如有帮助,请帮忙采纳一下,谢谢。

public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.nextLine();
        char array[] = new char[s.length()+1];
        int i=0,j = 1;
        //去掉开头的空格
        while(s.charAt(i) ==' '){
            i++;
        }
        if(s.charAt(i) >='a' && s.charAt(i) <= 'z')
            array[0] = (char) (s.charAt(i) - 32);
        else
            array[0] = s.charAt(i);
        i++;
        for(;i<s.length();i++){
            if( s.charAt(i) == ' ' ){
                if(array[j-1] != ' ')
                    array[j++] = s.charAt(i);
                else
                    continue;
            }else {
                if(array[j-1]==' ')
                    array[j++] = (char) (Character.toLowerCase(s.charAt(i)) - 32);
                else
                    array[j++] = Character.toLowerCase(s.charAt(i));
            }
        }
        
        for(i = j-1;i>=0;i--){
            if(array[i] != ' ') break;
        }
        array[i+1] = 0;
        String so = String.copyValueOf(array).trim();
        
        System.out.println(so);

    }

盘他,不难