gpt4 book ai didi

Java:希望忽略某些超出范围的行

转载 作者:行者123 更新时间:2023-12-01 16:34:56 25 4
gpt4 key购买 nike

目前我正在开发一个程序,该程序解析文件并从每行中取出 34-40 个字符并将它们放入数据库中的表中,但是每次我遇到少于 34 个字符的行时很长一段时间,我的程序吐出了这个错误:

WARNING: General Error:String index out of range: 40

我还是 Java 新手,因此需要帮助。这是我的代码的一部分:

try
{
fstream = new FileInputStream(filename);
DataInputStream in = new DataInputStream(fstream);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
PreparedStatement deleteFields = null;
String deleteTable = "DELETE FROM info WHERE VOLSER IS NOT NULL;";
deleteFields = conn.prepareStatement(deleteTable);
deleteFields.executeUpdate();
deleteFields.close();
logger.info(deleteTable);
PreparedStatement updateFields = null;
String[] qmarks = new String[linenumber];

//Adding data to the database
for(int i = 0; i < linenumber; i++)
{
String cust = in.readLine();
String subCust = cust.substring(34,40);
qmarks[i] = subCust;
String updateString = "REPLACE INTO info" + " (VOLSER) " + "VALUE ('" + (qmarks[i]) + "');";
logger.info(updateString);

try
{
updateFields = conn.prepareStatement(updateString);
updateFields.executeUpdate();
updateFields.close();
}
catch (SQLException e)
{
logger.warning("Error:" + e.getMessage());
}
}

该脚本每天都会运行,因此为了清除昨天的数据,我必须删除表的所有内容并再次重新插入所有值。删除后,它开始构建新内容的数组。我可以通过两种方法来解决这个问题,我正在寻求社区的反馈,以了解哪种方法最好。一种方法是我现在正在做的方法, try catch 字符 34-40,在下面的示例中将产生 A00000

TMSS0000N-02:00:30 Moving Volume A00000 to NEXT

另一种方法是跳过所有其他行,只查找其中包含“MOVING VOLUME”的行[行开头的时间戳发生变化,所以我认为这种方式会更困难]。

FOR 循环中某处的简单 IF 语句是否可以阻止错误?例如:

if (cust.length >= 34) 
{
cust.substring(34,40);
}
else
{
cust.substring = "XXXXXX";
}

最佳答案

当你调用cust.substring(34,40);时,你需要确保cust.length >= 40否则它会抛出你得到的异常。请参阅javadoc for public String substring(int beginIndex, int endIndex) :

Throws IndexOutOfBoundsException - if the beginIndex is negative, or endIndex is larger than the length of this String object, or beginIndex is larger than endIndex.

关于Java:希望忽略某些超出范围的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10181071/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com