String salary = split[5]; String deptNo = split[7]; int salaryInt = Integer.parseInt(salary); int deptNoInt = Integer.parseInt(deptNo);
时间: 2024-03-08 13:47:53 浏览: 112
根据您提供的代码,错误可能是由于输入的字符串 `salary` 或 `deptNo` 包含非数字字符导致的。请检查输入的字符串是否符合要求,例如可能包含空格、逗号、字母或其他非数字字符。如果输入的字符串确实包含非数字字符,您可以使用 `String` 类的 `replaceAll()` 方法来删除这些非数字字符,例如:
```
String salary = split[5].replaceAll("[^0-9]", "");
String deptNo = split[7].replaceAll("[^0-9]", "");
int salaryInt = Integer.parseInt(salary);
int deptNoInt = Integer.parseInt(deptNo);
```
这将删除 `salary` 和 `deptNo` 中所有非数字字符,只保留数字字符,然后将其转换为整数类型。如果上述方法仍然无法解决问题,请提供更多上下文或完整的代码以供参考。
相关问题
String salary = split[5].replaceAll("[^0-9]", "");; String deptNo = split[7].replaceAll("[^0-9]", "");; int salaryInt = Integer.parseInt(salary); int deptNoInt = Integer.parseInt(deptNo);
根据您提供的代码,我注意到您在 `salary` 和 `deptNo` 变量上使用了两个分号 `;;`,这可能导致编译错误。请尝试删除这些额外的分号,例如:
```
String salary = split[5].replaceAll("[^0-9]", "");
String deptNo = split[7].replaceAll("[^0-9]", "");
int salaryInt = Integer.parseInt(salary);
int deptNoInt = Integer.parseInt(deptNo);
```
这个错误通常是因为您试图将一个空字符串转换为数字类型,而空字符串无法转换为数字类型。请检查代码中与该错误相关的部分,确保输入的字符串非空且包含数字字符。如果您需要更多帮助,请提供更多上下文或代码片段以供参考。
package jdbc; import java.sql.*; import java.util.Scanner; public class HomeWork { /* Test1.java 输入老师的姓名,查询该老师的 姓名,年龄,职称,工资 */ public static void main(String[] args) { try (Connection connection = DBUtil.getConnection();){ Statement statement = connection.createStatement(); Scanner scanner = new Scanner(System.in); System.out.println("请输入老师的姓名:"); String username = scanner.nextLine(); String sql = "SELECT name,age,title,salary FROM teacher WHERE teacher='"+username+"'"; ResultSet resultSet = statement.executeQuery(sql); while (resultSet.next()){ String name = resultSet.getString("name"); int age = resultSet.getInt("age"); String title = resultSet.getString("title"); int salary = resultSet.getInt("salary"); System.out.println(""+name+","+age+","+title+","+salary); } } catch ( SQLException e) { e.printStackTrace(); } } }改正该代码
这段代码存在SQL注入的安全隐患,应该使用PreparedStatement或其他方式来防止注入攻击。以下是改正后的代码:
```
package jdbc;
import java.sql.*;
import java.util.Scanner;
public class HomeWork {
/*
* Test1.java 输入老师的姓名,查询该老师的 姓名,年龄,职称,工资
*/
public static void main(String[] args) {
try (Connection connection = DBUtil.getConnection();
PreparedStatement ps = connection.prepareStatement(
"SELECT name, age, title, salary FROM teacher WHERE teacher=?");) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入老师的姓名:");
String username = scanner.nextLine();
ps.setString(1, username);
ResultSet resultSet = ps.executeQuery();
while (resultSet.next()) {
String name = resultSet.getString("name");
int age = resultSet.getInt("age");
String title = resultSet.getString("title");
int salary = resultSet.getInt("salary");
System.out.println("" + name + "," + age + "," + title + "," + salary);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
```
改正后的代码使用了PreparedStatement,将用户输入的参数设置到占位符中,防止了SQL注入攻击。
阅读全文