input.next()用于具有多个值的一行

时间:2018-06-07 09:23:12

标签: java arrays arraylist java.util.scanner

我正在直接从我的代码写一个地址到一个带有文件写入器的文件,这些值存储在文件示例中的一行(街道264,华盛顿)。现在我想用一个构造函数写一个新的Arraylist,它要求输入三个值(街道,数字,城市)

我已经用这种方式完成了它,但是当我输入像“公园大道”这样的街道时,它给出了一个错误,因为Park avenue是两个单词......也想知道是否有更快“更好”的方式:

@Override
public List<Adres> query(ISpecification specification) {
    File adresConnection = new File(fsConnection.getAdresConnection());
    if (specification instanceof FileSpecification) {
        if (((FileSpecification) specification).toFileQuery().equals("ALL")) {
            ArrayList<Adres> adressen = new ArrayList<>();
            try (
                    Scanner input = new Scanner(adresConnection)) {
                System.out.println("Adressen laden wordt uitgevoerd");

                while (input.hasNext()) {
                    String straat = input.next();
                    String huisNrMetKomma = input.next();
                    int huisNummer = Integer.parseInt(huisNrMetKomma.substring(0, huisNrMetKomma.length() - 1));
                    String plaats = input.next();

                    adressen.add(new Adres(straat, huisNummer, plaats));
                }

1 个答案:

答案 0 :(得分:0)

nextLine读取多个单词,所以尝试使用nextLine();而不是next();

while (input.hasNext()) {
                String straat = input.nextLine();
                String huisNrMetKomma = input.nextLine();
                int huisNummer = Integer.parseInt(huisNrMetKomma.substring(0, huisNrMetKomma.length() - 1));
                String plaats = input.nextLine();

                adressen.add(new Adres(straat, huisNummer, plaats));
            }