[英]java - Exception in thread “main” java.lang.NumberFormatException: For input string: “” at
[英]Exception in thread “main” java.lang.NumberFormatException: For input string: “ ”
我正在嘗試訪問Simulation.log文件中的兩個字符串值,並將這兩個值轉換為long類型。 這是日志文件的示例:
當我嘗試訪問字符串時,它告訴自己是空值。 我得到的錯誤是:
我的代碼如下(我知道該語句沒有完全關閉):
File file = new File(simulationLogDir + "/simulation.log");
FileReader simulationLogReader = new FileReader(file);
BufferedReader bufferedReader = new BufferedReader(simulationLogReader);
StringBuffer stringBuffer = new StringBuffer();
String line;
while ((line = bufferedReader.readLine()) != null) {
String[] fields = line.split("\t");
long responseTime = Long.parseLong(fields[5]) - Long.parseLong(fields[4]);
if (line.startsWith("REQUEST")) {
if (fields[7].equals("OK")) {
addPassedTest(fields[1], new Request(fields[4],responseTime, fields[7]));
}
模擬日志中的每一行都由制表符分隔,因此,fields數組將每個字符串分隔開。
基於我所注意到的。 第8行(兩個parseLongs)確實容易受到異常的影響,或者可以說可以拋出NumberFormatException,特別是當它解析非數字字符串時。
什么時候發生? 基於線程“ main”中Exception問題的標題java.lang.NumberFormatException:對於輸入字符串:“” ,我很確定您文件中一行的實例,該實例在制表符后緊跟空格由Long.parseInt(string num)解析;
為了進一步解釋,我將給您2個示例情況。
情況1:文件中有一行如下所示
REQUEST(標簽)test_12345_54321(標簽)1(標簽)Macbook請求(標簽)(空格)1490183061440(標簽)1490183061321(標簽)確定
然后將按以下方式拆分此行:
字段[0] =請求
字段[1] = test_12345_54321
字段[2] = 1
字段[3] = Macbook請求
fields [4] =(空格)1490183061440
字段[5] = 1490183061321
字段[6] =好
解析第四個索引和第五個索引將是:
Long.parseLong(fields [4])-> 不能將空格解析為NumberFormatException的結果
Long.parseLong(fields [5])= 1490183061321->工作正常
情況2:文件中有一行如下所示
REQUEST(標簽)test_12345_54321(標簽)1(標簽)Macbook請求(標簽)1490183061440(標簽)(空間)(標簽)1490183061321(標簽)確定
然后將按以下方式拆分此行:
字段[0] =請求
字段[1] = test_12345_54321
字段[2] = 1
字段[3] = Macbook請求
字段[4] = 1490183061440
字段[5] =(空格)
字段[5] = 1490183061321
字段[6] =好
解析第四個索引和第五個索引將是:
Long.parseLong(fields [4])= 1490183061440->工作正常
Long.parseLong(fields [5])-> 不能將空格解析為NumberFormatException的結果
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.