java - 如何在另一个代码块中使用存储的字符串值
问题描述
我正在从数组列表中获取一些单词字符串,并且我正在删除字符串中的一些单词,所以现在我已经打印了那个单词并且我正在初始化客户端名称,所以现在我想将该存储的东西插入数据库中,所以现在它不是识别客户端名称,因为它位于不同的块中,因此如何获取该数据
String s;
String keyword = arra.get(6);
while ((s = br.readLine()) != null) {
if (s.contains(keyword)) {
s = s.replaceAll(keyword, " ");
System.out.println(s);
String Client_Name = s;
}
}
try {
Connection conn = PDFTOEXCEL.getConnection();
PreparedStatement stmt = conn.prepareStatement("insert into client_info values(?)");
stmt.setString(1, Client_Name);
int k = stmt.executeUpdate();
System.out.println("rows affected : " + k);
解决方案
您对 Java 编程看起来很陌生。正如评论中提到的,尝试阅读一些 Java 教程或阅读一些好的 Java 书籍以获得更好的理解和实践。https://www.geeksforgeeks.org/variable-scope-in-java/详细说明了作用域的工作原理。
现在对于您的问题,问题是您已在 if 块中声明了 client_name;因此,一旦程序退出 if 块,此变量的范围就会结束,并且在它之后将无法访问。尝试在 while 和 if 块之外声明 Client_Name (也使用正确的命名约定)(类似于 String 的声明;而且根据您的逻辑,您似乎不需要 s 和 Client_Name ),您应该很高兴。
示例代码 -
String clientName;
String keyword = arra.get(6);
while ((clientName = br.readLine()) != null) {
if (clientName.contains(keyword)) {
clientName = clientName.replaceAll(keyword, " ");
System.out.println(clientName);
}
}
try {
Connection conn = PDFTOEXCEL.getConnection();
PreparedStatement stmt = conn.prepareStatement("insert into client_info values(?)");
stmt.setString(1, clientName);
int k = stmt.executeUpdate();
System.out.println("rows affected : " + k);
推荐阅读
- spring-webflux - Spring webflux webclient中是否有类似于RestTemplate中的disableCookieManagement的方法
- javascript - 在 JSX 中映射时 React 函数调用不起作用
- python - StackedWidget 无法正常工作
- javascript - MathJax:是否可以仅突出显示特定元素而不是整个文档?
- android - 分页库仅在房间数据库中存储第一次获取的值
- php - PhpStorm:运行 PHP 服务器不起作用:找不到驱动程序
- c++ - 如何在 clang++ 中干净地进行格式化字符串连接
- c++ - 从当前时间戳计算每日午夜时间
- reactjs - React 和 Nest.js google auth 返回 CORS 错误
- firebase - 没有为“CollectionReference”类型定义方法“document”。颤振/火力基地