sigh,我竟然看不懂楼主在说什么

解决方案 »

  1.   

    我理解是判断字符数组是不是一个单词,
    3、4、5是单词长度,250、500、1000是相应的难度参数现在可能需要知道字符数组是不是一个单词,都是字母,或者a.都可以
    可以转换为string处理吧!那样会简单点
      

  2.   

    很抱歉,刚才问题没有说清楚,这个题是我上次应聘考的,当时考砸了.
    写一个这样的方法,接收char[]数组,判断里面有多少个单词,并且计算出平均长度
    单词的定义是:以空格分割,由a-z,A-Z组成,不含数字,单词结尾可以加一个点(.)但是这个点不记入此单词的长度,如:"test."算一个单词,长度为4,"www.csdn.com" "8u8"算无效单词.
    "This is a book."平均长度为11/4=2(整数相除)
    若单词平均长度小于等于3,返回250
    4或5--返回500,大于等于6,返回1000.需要注意的一点是:这个方法的参数不是String,而是char[],题目要求处理不能用String,也不能导入别的包,要用最基本的方法实现.
    希望大家讨论一下
      

  3.   

    我无聊之极,所以写了一个,虽然很笨,但也实现了。:)public class chars {
    char[] base;
    int counter=0;
    int length=0;
    int average=0;

    public chars(char[] source){
    base=source;
    length=this.len(this.base);
    this.countWord();
    }

    int len(char[] str){
    int i=0;
    try{
    char t;
    while(true){
    t=str[i];
    i++;
    }
    }catch(Exception e){
    return i;
    }
    }

    public int length(){
    return this.length;
    }

    boolean isAWord(char[] str){
    if(str==null) return false;
    if(str[len(str)-1]=='.'){
    char[] t=new char[len(str)-1];
    for(int j=0;j<len(str)-1;j++)
    t[j]=str[j];
    str=t;
    }
    for(int i=0;i<this.len(str);i++){
    char t=str[i];
    if(t<'A') return false;
    else if((t>'Z')&&(t<'a')) return false;
    else if(t>'z') return false;
    }
    return true;
    }

    void countWord(){
    char[] tmp=null;
    int i=0;
    int j=0;
    while(i<this.length()){
    if(base[i]!=' '){
    if(tmp==null){
    tmp=new char[1];
    tmp[0]=this.base[i];
    i++;
    j++;
    continue;
    }
    char[] t=new char[j+1];
    for(int c=0;c<j;c++){
    t[c]=tmp[c];
    }
    tmp=t;
    tmp[j]=this.base[i];
    j++;
    }
    if((base[i]==' ')||(i==this.length()-1)){
    if(j!=0)
    if(this.isAWord(tmp))
    this.counter++;
    j=0;
    tmp=null;
    }
    i++;
    }
    }

    public int getNumberOfWord(){
    return this.counter;
    }

    public int getAverage(){
    if(this.counter==0) return -1;
    return this.length/this.counter;
    }

    public int getPoint(){
    int l=this.getAverage();
    if((l<=3)&&(l>=0)) return 250;
    if((l==4)||(l==5)) return 500;
    if(l>=6) return 1000;
    return 0;
    }

    public static void main(String[] args){
    char[] s=new char[]{'t','h','i','s',' ','i','1','s',' ','a',' ','t','e','s','t','.'};
    chars t=new chars(s);
    System.out.println (t.length());
    System.out.println(t.getNumberOfWord());
    System.out.println (t.getAverage());
    System.out.println (t.getPoint());
    }
    }