gpt4 book ai didi

java - 无法从 Hashtable 获取值

转载 作者:行者123 更新时间:2023-11-30 06:53:31 25 4
gpt4 key购买 nike

我写了下面的Java代码,

try {
String str = "";
Hashtable< String, String> table = new Hashtable< String, String>();
fis = new FileInputStream("C:\\Users\\Dave\\Desktop\\station.txt");// FileInputStream
isr = new InputStreamReader(fis);
br = new BufferedReader(isr);

String str1 = "012649-99999";
String str2 = "012650-99999";
while ((str = br.readLine()) != null) {
String[] record = str.split("\t");
table.put(record[0], record[1]);
}
String stationName1 = table.get(str1);
String stationName2 = table.get(str2);

} catch(...)

station.txt的内容如下:

012649-99999    SIHCCAJAVRI
012650-99999 TRNSET-HANSMOEN

当我运行程序时,stationName1 始终为 null,而 stationName2 可以获得值 012650-99999。谁能告诉我为什么会这样?提前致谢!

@matt:是的,没错,当我将编码从“UTF-8”更改为“ANSI”时,它起作用了,stationName1 可以获得值,但为什么“UTF-8”不适用于这种情况?我总是使用那种格式。

最佳答案

问题是您的文本文件不包含任何 \t特点。有多个空格。正确的方法是使用 \\s+ , 匹配多个空格。

String[] record = str.split("\\s+");

此外Hashtable已经过时了。有 HashMap<>而不是现在。这是为我工作的完整代码。我已经测试过了:

String str;
HashMap<String, String> table = new HashMap<>();
FileInputStream fis = new FileInputStream("station.txt");
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader br = new BufferedReader(isr);

String str1 = "012649-99999";
String str2 = "012650-99999";

while ((str = br.readLine()) != null) {
String[] record = str.split("\\s+");
table.put(record[0], record[1]);
}
System.out.println(table.get(str1));
System.out.println(table.get(str2));

关于java - 无法从 Hashtable 获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37487338/

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