Java Scanner.next似乎被无故阻止

时间:2018-09-07 00:32:58

标签: java java.util.scanner

我试图在一段时间内获得用户输入:

package com.projet.geometrie;
import java.util.List;
import java.util.ArrayList;
import java.util.Scanner;

class TestGeo{
    public static void main(String[] args) {

        Scanner input_reader = new Scanner(System.in);
        boolean retour = false;
        boolean first = true;
        List<Vertex> listePoints = new ArrayList<>();

        while (!retour) {
            System.out.println("Entrez une coordonnée au format : x,y");
            String coord = input_reader.next();
            String[] coordSplit = coord.split(",");
            int x = Integer.parseInt(coordSplit[0]);
            int y = Integer.parseInt(coordSplit[1]);
            if (!first) {
                if (x != listePoints.get(0).getX() && y != listePoints.get(0).getY()) {
                    Vertex nouveauPoint = new Vertex(x, y);
                    listePoints.add(nouveauPoint);
                    if (listePoints.size() > 1) {
                    }
                } else {
                    retour = true;
                }
            } else {
                first = false;
                Vertex nouveauPoint = new Vertex(x, y);
                listePoints.add(nouveauPoint);
            }
        }
        input_reader.close();

        Section test = new Section(listePoints);

        System.out.println("Nombre de sommets : " + listePoints.size());
        System.out.println("Aire du polygone : " + test.getAire());
        System.out.println("Centroide X : " + test.getCoordCentroide().get(0) + " Y : " + test.getCoordCentroide().get(1));

    }
}

但是在某些时候,输入输入后,我的代码就卡住了。我写了输入,按回车,由于不再读取输入,它只是跳过了一行。它通常发生在3次迭代之后,但有时是2次,有时是4次。在调试模式下,它只会卡住尝试读取的内容。

有人知道我做错了什么吗?

我正在使用jdk 10.0.2,请告知我是否有其他有用的信息,我是java的新手。

* EDIT:张贴了我正在遇到错误的完整代码。类Vertex只是2个int的组合,并且已经过测试,我知道它可以工作。该类应采用用户输入的坐标,并将点添加到点列表中。如果最后输入的点与第一个相同,它将停止并显示有关所创建多边形的一些信息。

1 个答案:

答案 0 :(得分:0)

最后通过使用.nextInt()并要求用户分别输入x和y(作为2个不同的输入)来使其工作。我认为这与字符串参与该过程有关,尽管我不确定为什么会有问题。如果有人有解释,即使它现在正在工作,我也很高兴知道更多。