gpt4 book ai didi

java - Scanner.useDelimiter 不适用于基于 Web 的 CSV 文件

转载 作者:行者123 更新时间:2023-12-01 19:58:17 25 4
gpt4 key购买 nike

所以我是 Java 的初学者,我学习起来很困难,所以请放轻松。我正在研究一种解决方案,该解决方案将接受用户输入的英国货币并找到用户输入国家/地区的汇率。不知道我是否走在正确的轨道上,但下面是用户输入要转换的货币金额和国家/地区后的代码。我需要读取基于 Web 的 CSV 文件并解析为 POJO,但我无法让 in.useDelimiter 工作。

public static Double findExchangeRateAndConvert(String currencyType, double amount) throws IOException {


URL url = new URL("https://www.gov.uk/government/uploads/system/uploads/attachment_data/file/842362/exrates-monthly-1119.csv");
try (var in = new Scanner(
new BufferedReader(
new InputStreamReader(url.openStream())))) {


var line = "";
in.useDelimiter(",");
while (in.hasNextLine()) {
line = in.nextLine();

System.out.println(line);

if (line.contains(currencyType)) {
System.out.println("I found it.");
System.exit(0);
}

}

}

return null;
}

最佳答案

使用扫描仪一次读取一行,然后根据正则表达式分割该行。逐行处理是一种很好的方法,因为它很容易理解正在发生的事情。

public class Main {

public static void main(String[] args) throws IOException {
Double d = Main.findExchangeRateAndConvert("USD", 12);

System.out.println("d=" + d);
}

public static Double findExchangeRateAndConvert(String currencyType, double amount) throws IOException {


URL url = new URL("https://www.gov.uk/government/uploads/system/uploads/attachment_data/file/842362/exrates-monthly-1119.csv");
try (var in = new Scanner(
new BufferedReader(
new InputStreamReader(url.openStream())))) {


var line = "";
in.useDelimiter(",");
while (in.hasNextLine()) {
line = in.nextLine();

System.out.println(line);

String[] splitLine = line.split(",");
if (splitLine[2].equals(currencyType)) {
System.out.println("I found it.");
return Double.valueOf(splitLine[3]);
}
}
}

return null;
}

}

关于java - Scanner.useDelimiter 不适用于基于 Web 的 CSV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59020557/

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