当我这样定义两个数组时,可以正确返回结果:是这样调用的:x=cut.percentOfNeg(cutWordResult, negWords);
String [] cutWordResult={"你好","刚才","收到","的","手机","不喜欢"};
String []negWords ={"不喜欢","高兴","很好","真的","不错","的"};
但是当我这样用时,结果全是0.0,我还是这样调用的x=cut.percentOfNeg(cutWordResult, negWords);
//下面这条语句是调用cut对象的readNegWords方法,该方法的返回值是一个字符串数组。,然后复制给negWords
String []negWords=cut.readNegWords("D:/workspace/Percent1/negative_simplified.txt");
String [] cutWordResult={"你好","刚才","收到","的","手机","不喜欢"};
此时的返回结果是0.0,但是我能打印出negWords这个数组内的元素,并且他和第二个数组时有相同元素的,可结果却不对,谁能告诉我原因呢?
11 个解决方案
#1
你打印下negWords这个数组的长度看看
#2
能打印出来,是5000多行
#3
贴下相除的代码看看,1/1000如果不转型的得的结果就是0
#4
相除的代码我转型了:
return((float)num/cutWordResult.length);结果全是0.0
如果是
return((float)++num/cutWordResult.length);结果是1/数组长度;
好像说明num的值为0;但我比较果2个数组,里面是有相同的字符串的
return((float)num/cutWordResult.length);结果全是0.0
如果是
return((float)++num/cutWordResult.length);结果是1/数组长度;
好像说明num的值为0;但我比较果2个数组,里面是有相同的字符串的
#5
你把是一样的打印出来看看吧?有时候肉眼看的是一样的,但其实不一样比如会多个什么回车什么换行的字符
#6
public int percentOfNeg(String []cutWordResult,String []negWords){
int num=0;
for(int j=0;j<cutWordResult.length;j++)
{
for(int k=0;k<negWords.length;k++)
{
if(cutWordResult[j]==(negWords[k]))
{
num++;
break;
}
}
}
return(num);
打印出来的这个num值也为0;
我所比较的数组,第一个是通过按行(一行为一个字符串,比如喜欢)读取文本文件,先把每一行添加到lis集合中,然后得到List的size,这样在逐一把list中的内容复制到数组中
第二个是通过split函数,按空格分割形成的数组。因为里面的数据形式是这样的:你好 今天 没 发现 什么 优点
#7
我知道了,肯定第一个数组中多了回车换行符,但我该怎么把它去掉呢
#8
Pattern p = Pattern.compile("\t|\r|\n");
试试看
试试看
#9
/读取负性情感词文件,把结果存放到negWords字符串数组中-----------------------------------------------------------------------------
public String [] readNegWords (String path)
{
Pattern p = Pattern.compile("\t|\r|\n");
File file = new File(path);
List list = new ArrayList();
String[] negWords = null;
try{
BufferedReader br = new BufferedReader(new FileReader(file));
String line=null;
while((line = br.readLine()) != null)
{
list.add(line);//因为不知道有几行数据,所以先存入list集合中
}
br.close();
}
catch (IOException e)
{
e.printStackTrace();
}
negWords=new String[list.size()];
for(int i=0;i<list.size();i++)
{
String s=(String)list.get(i);
Matcher m = p.matcher(s);
String after = m.replaceAll("");
negWords[i]=after;
}
return negWords;
}
我把这个数组这样处理了,可结果还是0
#10
文件只放二三个词,一步步的跟吧,代码貌似没问题
#11
你加我QQ:657614925,我把我的程序给你,你帮我调试调试可以吗?这个问题困扰我好久了
#1
你打印下negWords这个数组的长度看看
#2
能打印出来,是5000多行
#3
贴下相除的代码看看,1/1000如果不转型的得的结果就是0
#4
相除的代码我转型了:
return((float)num/cutWordResult.length);结果全是0.0
如果是
return((float)++num/cutWordResult.length);结果是1/数组长度;
好像说明num的值为0;但我比较果2个数组,里面是有相同的字符串的
return((float)num/cutWordResult.length);结果全是0.0
如果是
return((float)++num/cutWordResult.length);结果是1/数组长度;
好像说明num的值为0;但我比较果2个数组,里面是有相同的字符串的
#5
你把是一样的打印出来看看吧?有时候肉眼看的是一样的,但其实不一样比如会多个什么回车什么换行的字符
#6
public int percentOfNeg(String []cutWordResult,String []negWords){
int num=0;
for(int j=0;j<cutWordResult.length;j++)
{
for(int k=0;k<negWords.length;k++)
{
if(cutWordResult[j]==(negWords[k]))
{
num++;
break;
}
}
}
return(num);
打印出来的这个num值也为0;
我所比较的数组,第一个是通过按行(一行为一个字符串,比如喜欢)读取文本文件,先把每一行添加到lis集合中,然后得到List的size,这样在逐一把list中的内容复制到数组中
第二个是通过split函数,按空格分割形成的数组。因为里面的数据形式是这样的:你好 今天 没 发现 什么 优点
#7
我知道了,肯定第一个数组中多了回车换行符,但我该怎么把它去掉呢
#8
Pattern p = Pattern.compile("\t|\r|\n");
试试看
试试看
#9
/读取负性情感词文件,把结果存放到negWords字符串数组中-----------------------------------------------------------------------------
public String [] readNegWords (String path)
{
Pattern p = Pattern.compile("\t|\r|\n");
File file = new File(path);
List list = new ArrayList();
String[] negWords = null;
try{
BufferedReader br = new BufferedReader(new FileReader(file));
String line=null;
while((line = br.readLine()) != null)
{
list.add(line);//因为不知道有几行数据,所以先存入list集合中
}
br.close();
}
catch (IOException e)
{
e.printStackTrace();
}
negWords=new String[list.size()];
for(int i=0;i<list.size();i++)
{
String s=(String)list.get(i);
Matcher m = p.matcher(s);
String after = m.replaceAll("");
negWords[i]=after;
}
return negWords;
}
我把这个数组这样处理了,可结果还是0
#10
文件只放二三个词,一步步的跟吧,代码貌似没问题
#11
你加我QQ:657614925,我把我的程序给你,你帮我调试调试可以吗?这个问题困扰我好久了