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 17:35:03 浏览: 91
在你的代码中,`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。
vb.net IndexOf(String, Int32)在字符串中搜索指定字符串的第一个匹配项详细实例
好的,下面是一个简单的 VB.NET 代码示例,演示如何使用 IndexOf(String, Int32) 方法在字符串中搜索指定字符串的第一个匹配项:
```
Dim inputString As String = "Hello world, hello VB.NET!"
Dim searchString As String = "hello"
Dim startIndex As Integer = 0
Dim index As Integer = inputString.IndexOf(searchString, startIndex)
If index <> -1 Then
Console.WriteLine($"Found '{searchString}' at index {index}")
Else
Console.WriteLine($"'{searchString}' not found in '{inputString}'")
End If
```
在上面的代码中,我们首先定义了一个包含要搜索的字符串的输入字符串(inputString)和要查找的字符串(searchString)。我们还定义了从哪个字符位置开始搜索的起始索引(startIndex),在本例中为0。
接下来,我们使用 IndexOf(String, Int32) 方法在输入字符串中搜索第一个匹配项。该方法返回匹配项在字符串中的索引,如果未找到匹配项,则返回-1。
最后,我们使用条件语句检查索引是否为-1,如果不是,则打印匹配项的索引位置。否则,我们将打印一条消息,指示未找到匹配项。
希望这个示例能够帮助你理解如何使用 IndexOf(String, Int32) 方法在 VB.NET 中搜索字符串的匹配项。
阅读全文