如何扫描,直到下一行在Java中等于0?

时间:2015-06-04 21:22:52

标签: java

我试图制作一个带有K个坐标的程序,并为每个坐标打印" X = ___,Y = ____"。所以这意味着输出具有这种格式的K行。

程序应该在到达只包含数字" 0"的行时停止,这是我正在努力实现的。这是我的代码:

    public static void main (String [] args){

    Scanner scanner = new Scanner (System.in);
    String kString = scanner.next();
    if (!kString.equals("0")){

        int K = Integer.parseInt(kString);
            int [] xCords = new int [K];
            int [] yCords = new int [K];
            for (int i=0; i<K; i++){
                xCords[i] = scanner.nextInt();
                yCords[i] = scanner.nextInt();
                System.out.println ("X = "+xCords[i]+", Y = "+yCords[i]);
            }

    }else{
        System.exit(1);
    }

}

如果我的第一行只是数字0,程序就会停止运行。

如果它是另一个数字,它实际上可以让我扫描K个坐标,但是从第二个K值开始有一个奇怪的行为,依此类推。

如果我试图阻止它输入等于0的行(而不是第一行),它就不会停止。

任何错误的线索?

3 个答案:

答案 0 :(得分:0)

你应该使用nextLine代替next,当你找到一条只包含“0”的行时你想要停止:

String kString = scanner.nextLine();
while (kString != null && !kString.equals("0")){
    ... processing the current kString ...
    kString = scanner.nextLine();
}

答案 1 :(得分:0)

使用

扫描整个文档
while(scanner.hasNextLine()){
    String line = scanner.nextLine();
    if(line.equals("0")){
        //break out of loop
    }
}

然后如果您扫描的行等于“0”,则可以突破循环

答案 2 :(得分:0)

最后,它是你所有建议的混合物。这是我的最终工作代码:

    @Entity
    @Table(name = "user_sessions")
    @JsonIgnoreProperties( { "userID" })
    public class UserSession{

    @Column(name="uid")
    private Long userID;
    @Id
    @Column(name="access_key")
    private String accessKey;
    @Column(name="secret_key")
    private String secretKey;

    public Long getUserID() {
    return userID;
    }

    public void setUserID(Long s) {
        this.userID = s;
    }`