public static int progress;public static void SearchXml(String searchString,String attributeString,Boolean searchFangShi) throws DocumentException, IOException, NoSuchFieldException, SecurityException{ clearList(); String xPathString=null; //根据条件 匹配查找的xpath路径 if (attributeString==null||attributeString.trim().equals("")) { xPathString="//"+searchString; }else if(!searchFangShi){ xPathString="//"+searchString+"[@"+attributeString+"]"; }else { xPathString="//"+searchString+"[contains(@"+attributeString.replaceFirst("=", ",")+")]"; } //遍历文本list,储存存在文件 int index=0; for(File f: fList) { if (f==null||f.length()==0) { noFileStrings.add(getFileName(f)+"为空文件"); continue; }else{ SAXReader saxReader=new SAXReader(); Document document =saxReader.read(f); Element element1=(Element)document.selectSingleNode(xPathString); List<Node> node1ist=document.selectNodes(xPathString); if(element1==null||element1.equals(null)) { noFileStrings.add(f.getAbsolutePath()+"不存在所搜节点"); }else { existStrings.add(f.getAbsolutePath()+"\n"+"存在"+document.selectNodes(xPathString).size()+"个所搜节点"); efList.add(f); docList.add(document); List<Element> eleList=new ArrayList<Element>(); for(Node n:node1ist ) { eleList.add((Element)n); } elefileList.add(eleList); } } progress=(int)((index*100)/fList.size()); index++; }为啥progress总是等于0
时间: 2024-04-08 13:35:03 浏览: 107
在你的代码中,`progress` 总是等于0的原因可能是由于整数除法的结果被截断为0。在Java中,如果除法操作中的两个操作数都是整数,则结果也将是整数。如果要得到除法的浮点结果,可以将其中一个操作数转换为浮点数。在这种情况下,将 `fList.size()` 转换为浮点数可以解决问题,如下所示:
```java
progress = (int) ((index * 100.0) / fList.size());
```
通过将 `fList.size()` 改为 `fList.size() * 1.0` 或 `fList.size() / 1.0`,确保至少有一个操作数是浮点数,从而获得正确的除法结果。这样,`progress` 将能够正确地表示进度值。
相关问题
cannot call member function ‘int LabelParse::searchString(label_inf&, std::__cxx11::string&, size_t&, char&)’ without object
这是一个编译错误,它的意思是你在没有创建对象的情况下调用了 LabelParse 类的成员函数 searchString。你需要在调用成员函数之前创建一个类的对象,然后通过该对象来调用成员函数。
示例代码:
```
LabelParse lp;
label_inf li;
std::string str = "example";
size_t pos;
char delim = ':';
int result = lp.searchString(li, str, pos, delim);
```
在上面的代码中,我们首先创建了一个 LabelParse 类的对象 lp,然后调用了它的成员函数 searchString,并传递了必要的参数。请注意,我们使用对象 lp 来调用成员函数 searchString。
编写函数int Searchstring(const char str[]
编写`SearchString`函数通常是一个查找特定字符或字符串在给定数组中位置的通用操作。在C语言中,这个函数可能会接收一个指向常量字符数组的指针作为输入参数,尝试找出目标字符串或字符是否存在于该数组及其子串中。如果找到目标,则返回它第一次出现的位置(从0开始计数),如果没有找到则返回一个特定值(如-1表示未找到)。
例如,函数可能看起来像这样:
```c
int SearchString(const char* str, const char target[]) {
int len1 = strlen(str);
int len2 = strlen(target);
if (len2 > len1) { // 如果目标比搜索串长,不可能在搜索串中
return -1;
}
for (int i = 0; i <= len1 - len2; i++) {
int match = 1; // 初始化匹配标志为1,假设能找到
for (int j = 0; j < len2; j++) {
if (str[i + j] != target[j]) {
match = 0; // 目标字符不符,结束内层循环并检查下一个起始点
break;
}
}
if (match) { // 找到完全匹配的目标
return i;
}
}
return -1; // 没有找到
}
```
阅读全文
相关推荐














