谁帮我用Java求解一下这个“问题点数”问题,谢谢!

来源:百度知道 编辑:UC知道 时间:2024/05/23 16:18:01
公司研发人员已经得出结论:问题难度只于问题陈述语句中词的平均长有关。
如果平均词长小于或等于3,则该问题是一个250点问题。
如果平均词长等于4或5,则该问题是一个500点问题。
如果平均词长大于或等于6,则该问题是一个1000点问题。

定义:
词元:一组字符,两端或是一句的开头或结尾,或以一个或多个空格隔开
如:input String parameter中的input,String,paremeter
词:一个词元,只包含字母a-z,A-Z,可能会以一个单个句 点(.)结尾,一个词至少必须有一个字母
词长:一个词里的字母数(句点不是字母)
以下是词:ab ab.
以下不是词:ab.. a.b .ab a.b. a2b. .

平均词长:以问题陈述中的词数来除问题陈述中各个词的词长总和,该除法是整除,如果词为0。则平均长为0

实现函数pointVal.这个 函数有一个字符数组的参数,这个参数是问题的陈述句,这个函数返回一个int值。返回值表示问题的点数(250.500.1000),问题陈述句应该从左到右处理,如果有错误发生,程序返回-1。

类名:class HowEasy
方法名:public int pointVal(char[] problenStatement)

不能使用基于String类的运算,只可用char数组运算

不能引用系统函数,可编写辅助函数并在pointVal中引用

不 使用import语句,class不属于任何package

请大家用java教我编一下,谢谢...

//word 纪录词元个数, length 纪录总词长, result 用来返回最终结果, n 纪录字符数组的长度。
//for循环对字符数组每一个字符进行处理,若属于'a'~'z'或者'A'~'Z' 则length加一。
//若不属于'a'~'z'和'A'~'Z',则word加一, 其中用flag来标记,以防word重复加。
//而后用length除以word求出平均词长,并根据其结果返回相应的点数值。
//具体程序如下。

class HowEasy
{
public int pointVal(char[] problenStatement)
{
int result;
int word=0,length=0,flag=-1;
int n = problenStatement.length;
int i;
for(i=0;i<n;i++)
{
if((problenStatement[i]>='a' && problenStatement[i]<='z' )|| (problenStatement[i]>='a' && problenStatement[i]>='a'))
{
length++;
flag=0;
}
else
{
if(flag==0)
word++;
flag--;
}
}
if(flag==0)
word++;
if(word==0)
{
result = 0;
}
else
{
flag = length /