因此,我是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;
    }

最佳答案

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

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/

10-09 23:42